2015-04-19 18 views
11

Ich verwende Epplus Bibliothek zu konvertieren dataTable in Excel. Ich benutze eine Textarea in meiner Frontendseite. In dem es auch einen Zeilenumbruch gibt. Aber das Problem ist, wenn ich diese Datei in Excel umwandle, zeigt Text in einer Zeile nicht mit einem Zeilenumbruch.Wie kann ich einen Zeilenumbruch in Excel epplus geben C#

Wie kann ich einen Zeilenumbruch in Excel Epplus hinzufügen.

Ich bin mit dem folgenden Skript:

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

Antwort

1

.LoadFromDataTable() werden Zeilenumbrüche erhalten, die in dataTable in den Daten vorhanden ist.

dieses minimal Beispiel Laufen erzeugt eine Tabelle, wo die Zeichenfolge in Zelle A2 den Zeilenumbruch enthält:

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

Ich denke, würde entweder die Daten hat leider keinen Zeilenumbruch oder seine nur einen Fall enthalten, dass Sie nur sehen eine Zeile, wenn Sie die Tabelle wegen der Zeilenhöhe öffnen?

+0

+1 Dies funktioniert, aber es formatiert die Zellen nicht automatisch, so dass der Text korrekt angezeigt wird. (Nur Vorbehalt emptor) – Chad

10

Haben Sie Textumbruch auf den Zellen aktiviert? Es ist standardmäßig deaktiviert. So etwas wie folgt aus:

<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> 

Und:

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

} 

Und ich fallen diese in das Textfeld:

This is line 1. 

This is line 3. 

This is line 5. 

, die mit Zeilenumbrüche öffnet gezeigt.

Verwandte Themen