web-dev-qa-db-ja.com

Excel epplus c#で改行するにはどうすればよいですか

Epplusライブラリを使用してExcelでdataTableを変換しています。フロントエンドサイトでtextareaを使用しています。そこにも改行があります。しかし、問題は、このファイルをExcelに変換すると、テキストが改行ではなく1行で表示されることです。

Excel Epplusで改行を追加するにはどうすればよいですか。

次のスクリプトを使用しています。

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

セルのテキストの折り返しをオンにしましたか?デフォルトではオフになっています。だからこのようなもの:

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

}

そして、これをテキストエリアにドロップします:

This is line 1.

This is line 3.

This is line 5.

改行が表示された状態で開きます。

19
Ernie S

.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行しか表示されない場合がありますか?

2
Stewart_R