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

alt text

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.

alt text

Wie dieses Problem beheben?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top