簡體   English   中英

我怎樣才能在 excel epplus c# 中換行

[英]How can I give line break in excel epplus c#

我正在使用Epplus庫來轉換dataTable中的數據表。我在我的前端站點中使用了一個文本區域。 其中也有一個換行符。 但是,問題是當我將此文件轉換為 Excel 時,文本顯示在一行中而不是換行符。

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

我正在使用以下腳本:

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

您是否打開了單元格上的文本換行? 默認情況下它是關閉的。 所以像這樣:

<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();

}

我把它放在 textarea 中:

This is line 1.

This is line 3.

This is line 5.

打開時顯示換行符。

.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"));
}

我猜想要么數據不包含換行符,要么只是在打開電子表格時由於行高而只能看到一行的情況?

您也可以嘗試此解決方案:

string textOriginal = "First line text.| Second line text.";
string textToWrite = textOriginal.Replace("|", ("" + ((char)13) + ((char)10)));

myWorksheet.Cells["a1"].Value = textToWrite;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM