Ich habe eine mit Epplus erstellte Excel-Tabelle, habe einige Probleme und möchte von jemandem geleitet werden, der eine ähnliche Herausforderung gelöst hat.
Ich muss die Zahlenformatierung auf einen doppelten Wert anwenden und möchte ihn in Excel so darstellen.
- 8 → 8.0
- 12 → 12.0
- 14.54 → 14.5
- 0 → 0.0
Hier ist mein Code
ws.Cells[row, col].Style.Numberformat.Format = "##0.0";
Die endgültige Excel-Datei hängt immer E + 0 an das Ende dieses Formats an und zeigt daher stattdessen die endgültigen Werte wie folgt an.
- 8 → 8.0E + 0
- 12 → 12.0E + 0
- 14,54 → 14,5E + 0
- 0 → 000.0E + 0
Als ich in dem Format Zellen der erzeugten Excel - Tabelle zu überprüfen, ich sehe , dass mein Format erscheint ##0.0E+2
statt , ##0.0
dass ich aufgebracht.
Was kann falsch sein?
Antworten:
Hier sind einige Optionen für das Zahlenformat für EPPlus:
//integer (not really needed unless you need to round numbers, Excel will use default cell properties) ws.Cells["A1:A25"].Style.Numberformat.Format = "0"; //integer without displaying the number 0 in the cell ws.Cells["A1:A25"].Style.Numberformat.Format = "#"; //number with 1 decimal place ws.Cells["A1:A25"].Style.Numberformat.Format = "0.0"; //number with 2 decimal places ws.Cells["A1:A25"].Style.Numberformat.Format = "0.00"; //number with 2 decimal places and thousand separator ws.Cells["A1:A25"].Style.Numberformat.Format = "#,##0.00"; //number with 2 decimal places and thousand separator and money symbol ws.Cells["A1:A25"].Style.Numberformat.Format = "€#,##0.00"; //percentage (1 = 100%, 0.01 = 1%) ws.Cells["A1:A25"].Style.Numberformat.Format = "0%"; //accounting number format ws.Cells["A1:A25"].Style.Numberformat.Format = "_-$* #,##0.00_-;-$* #,##0.00_-;_-$* \"-\"??_-;_-@_-";
Auf Anfrage einige DateTime-Formatierungsoptionen.
//default DateTime pattern worksheet.Cells["A1:A25"].Style.Numberformat.Format = DateTimeFormatInfo.CurrentInfo.ShortDatePattern; //custom DateTime pattern worksheet.Cells["A1:A25"].Style.Numberformat.Format = "dd-MM-yyyy HH:mm";
quelle
_ \"CHF\" * # ##0.00_ ;_ \"CHF\" * -# ##0.00_ ;_ \"CHF\" * \"-\"??_ ;_ @_
Don't change the decimal and thousand separators to your own localization. Excel will do that for you.
Das! Der Versuch, Dezimalstellen zu "korrigieren", ist eine große Quelle von Fehlern und fehlerhaften Formeln!Style.Numberformat.Format = "@";
Ergänzung zur akzeptierten Antwort, da der Wert Accept Object die Nummer zum Beispiel an Value übergeben muss, wenn Ihre Eingabe in einer Zeichenfolge erfolgt:
var input = "5"; ws.Cells["A1:A25"].Value = double.Parse(input);
quelle
Ein weiterer Zusatz zur akzeptierten Antwort: Sie können nullfähige Werte verwenden und die Formatierung sieht gut aus, ABER es wird eine Zeichenfolge in Excel und Sie können nicht SUM, AVG usw.
Stellen Sie also sicher, dass Sie die tatsächliche
Value
Nullwerte verwenden.quelle
Und wenn Sie eine bestimmte Spalte wie die Spalte "B" im Zahlenformat formatieren möchten, können Sie dies auf folgende Weise tun:
using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("SHEET1"); worksheet.Cells["A1"].LoadFromDataTable(dataTable, PrintHeaders: true); for (var col = 1; col < dataTable.Columns.Count + 1; col++) { if (col == 2)//col number 2 is equivalent to column B { worksheet.Column(col).Style.Numberformat.Format = "#";//apply the number formatting you need } worksheet.Column(col).AutoFit(); } return File(package.GetAsByteArray(), XlsxContentType, "report.xlsx");//downloads file }
quelle