【问题标题】:How can I give line break in excel epplus c#如何在excel epplus c#中换行
【发布时间】:2015-04-19 15:53:41
【问题描述】:

我正在使用 Epplus 库在 Excel 中转换 dataTable。我在我的前端站点中使用 textarea。其中也有换行符。但是,问题是当我将此文件转换为 Excel 时,文本显示在一行中,而不是换行符。

如何在 Excel Epplus 中添加换行符。

我正在使用以下脚本:

using (ExcelPackage pck = new ExcelPackage(newFile)) {
  ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Accounts");
  ws.Cells["A1"].LoadFromDataTable(dataTable, true);
  pck.Save();
}

【问题讨论】:

    标签: c# asp.net epplus


    【解决方案1】:

    您是否打开了单元格上的文字自动换行?默认情况下它是关闭的。所以是这样的:

    <body>
        <form id="form1" runat="server">
        <div>
            <textarea id="TextArea1" style="height: 200px; width: 400px;" runat="server"></textarea>
        </div>
        <div>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_OnClick" Text="Button" />
        </div>
        </form>
    </body>
    

    还有这个:

    protected void Button1_OnClick(object sender, EventArgs e)
    {
        //Create the table from the textbox
        var dt = new DataTable();
        dt.Columns.Add("Column1");
    
        var dr = dt.NewRow();
        dr[0] = TextArea1.InnerText;
    
        dt.Rows.Add(dr);
    
        var excelDocName = @"c:\temp\temp.xlsx";
        var aFile = new FileInfo(excelDocName);
    
        if (aFile.Exists)
            aFile.Delete();
    
        var pck = new ExcelPackage(aFile);
        var ws = pck.Workbook.Worksheets.Add("Content");
        ws.Cells["A1"].LoadFromDataTable(dt, true);
        ws.Cells["A1:A2"].Style.WrapText = true;  //false by default
        pck.Save();
        pck.Dispose();
    
    }
    

    然后我把它放到文本区域中:

    This is line 1.
    
    This is line 3.
    
    This is line 5.
    

    打开时显示换行符。

    【讨论】:

      【解决方案2】:

      .LoadFromDataTable() 将保留dataTable 中的数据中存在的换行符。

      运行这个最小示例会生成一个电子表格,其中单元格 A2 中的字符串包含换行符:

      DataTable dt = new DataTable();
      dt.Clear();
      dt.Columns.Add("TestCol");
      DataRow row = dt.NewRow();
      row["TestCol"] = "string that"+Environment.NewLine+"contains a linebreakc";
      dt.Rows.Add(row);
      
      using (var package = new ExcelPackage())
      {
          ExcelWorksheet ws = package.Workbook.Worksheets.Add("DataTable");
          ws.Cells["A1"].LoadFromDataTable(dt, true);
      
          package.SaveAs(new FileInfo(@"C:\Temp\test.xlsx"));
      }
      

      我猜要么数据不包含换行符,要么只是因为行高而在打开电子表格时只能看到一行?

      【讨论】:

      • +1 这行得通,但它不会自动格式化单元格以便正确显示文本。(请注意)
      • Chad 是对的,出于视觉目的,此解决方案效果不佳。
      【解决方案3】:

      你也可以试试这个解决方案:

      string textOriginal = "First line text.| Second line text.";
      string textToWrite = textOriginal.Replace("|", ("" + ((char)13) + ((char)10)));
      
      myWorksheet.Cells["a1"].Value = textToWrite;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        相关资源
        最近更新 更多