2016-06-07 11 views
0

Beim Anwenden von CellStyle auf eine Zelle mit GetFormat oder GetBuiltinFormat für "#, # 0" wird dasselbe in der Zelle nicht gerendert. Fehle ich etwas?NPOI GetFormat oder GetBuiltinFormat

Zum Beispiel der Anzahl an Zellen gerendert sollte als 10.000, während auf Klick auftauchen sollte gleich die Bearbeitungsleiste angezeigt 10000

var sheetLabelCellStyle = hssfworkbook.CreateCellStyle(); 
sheetLabelCellStyle.Alignment = HorizontalAlignment.Right; 
sheetLabelCellStyle.DataFormat = hssfworkbook.CreateDataFormat().GetFormat("#,##0"); 
. 
. 
ICell cell = row.CreateCell(j,CellType.Numeric); 
. 
. 
System.Decimal objVal = Convert.ToDecimal(dt.Rows[i][columnName].ToString()); 
columnValue = objVal.ToString("#,#0", CultureInfo.InvariantCulture); 
cell.SetCellValue(columnValue); 
cell.CellStyle = sheetLabelCellStyle; 

Derzeit wird es als 10000 Rendering und in Formel bar sein auch gleich zeigen . Während die gewünschte Zellgehalt 10.000 und in Formel bar ist, sollte es 10000

werden, wenn ich die objVal Teil es invariant Kultur entfernen Umwandlung, so zeigt es als 10000.00 sowohl in Zell- und Formel bar

Antwort

1

Konvertieren des Cellvalue um den Typ und nicht eine Zeichenfolge zu verdoppeln, bevor die Zuweisung mit SetCellValue das Problem gelöst hat.

ICellStyle cellStyle = hssfworkbook.CreateCellStyle(); 
cellStyle.DataFormat = hssfworkbook.GetCreationHelper().CreateDataFormat().GetFormat("#,##0"); 
cellStyle.Alignment = HorizontalAlignment.Right; 
. 
. 
System.Decimal objVal = Convert.ToDecimal(dt.Rows[i][columnName].ToString()); 
. 
. 
cell.SetCellValue((Double)objVal); 
cell.SetCellType(CellType.Numeric); 
cell.CellStyle = cellStyle; 

Die Zuweisung als String verursachte den Verlust des gewünschten Formats.