NPOI Excel Zahlenformat zeigt, die nicht in Excel-Datei in asp.net
Frage
Ich versuche, Doppel-und Zahlenformat Zellen in Excel erstellen Bibliothek NPOI. Ich verwendete Code wie
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
In Excel Zahlen richten richtig, aber wenn ich überprüfen Format wird in „Allgemein“
zeigt
dann änderte ich meinen Code wie unten
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0")
cell.CellStyle = cellStyle
Dann Während Öffnen der Datei es Fehler geben und auch so lange dauern würde, zu öffnen. Aber zeigt Excel-Format in "Nummer"
Fehler zeigt, ist wie unten.
Wie dieses Problem beheben?
Lösung
Hier finden Sie aktuelle diese sind Sie für jede Zelle ein Objekt Cellstyle erstellen? Wenn dies der Fall nicht. Versuchen Erstellen nur ein paar Arten, bevor Sie Ihre Zellen zu schaffen und dann gelten diese vordefinierten Stile zu den Zellen, die Sie erstellen.
Andere Tipps
Hare ist eine einfache Art und Weise im doppelten Format in Excel-Datei weiter verwenden NPOI zu erstellen.
//make NUMERIC Format in Excel Document // Author: Akavrelishvili
var eRow = sheet.CreateRow(rowIndex); //create new Row , rowIndex - it's integer, like : 1,2,3
eRow.CreateCell(0).SetCellValue(row["ProvidName"].ToString()); //create cell and set string value
double Amount = Convert.ToDouble(row["Amount"].ToString()); //convert string to double
eRow.CreateCell(1).SetCellValue(Amount); // create cell and set double value.
Dies funktioniert Version, habe ich es ein viele Projekte verwendet wird.
Sehr ist hart Datums- und Uhrzeitformat in Excel einfügen, gibt es noch kein gutes Beispiel in Internet und ich denke, dass es die Leute es richtig zu machen hilft. Ich zeige Ihnen, Code-Beispiel:
//make Date Time Format in Excel Document // Author: Akavrelishvili
var eRow = sheet.CreateRow (rowIndex); erstellen // neue Zeile // rowIndex - es ist integer, wie: 1,2,3
ICellStyle cellDateStyle = workBook.CreateCellStyle(); //create custom style
cellDateStyle.DataFormat = workBook.CreateDataFormat().GetFormat("dd/mm/yyyy"); //set day time Format
eRow.CreateCell(3).SetCellValue(Convert.ToDateTime(row["Date"])); //set DateTime value to cell
eRow.GetCell(6).CellStyle = cellDateStyle; // Restyle cell using "cellDateStyle"
I hope it helps
die zu viele verschiedene Zellenformate beheben alle Arten außerhalb jeder Schleife erklären Sie ausgeführt werden können.
ich Sie ‚j‘ presumeing wäre der enumerator so ich werde fallen, was Sie für Sie in einem korrigierten Format hatten.
Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0")
For col = 0 To ColoumCounter
For j = 0 To Counter
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
cell.CellStyle = cellStyle
Next
Next
Dies sollte besser ein wenig arbeiten, indem die Anzahl der „Neu“ Arten zu begrenzen.
Erstellen Sie einen Stil dann aber dieser Stil für die Spalte
ICellStyle _TextCellStyle = wb1.CreateCellStyle();
_TextCellStyle.DataFormat = wb1.CreateDataFormat().GetFormat("@");
sheet.SetDefaultColumnStyle(2, _TextCellStyle);