将CellStyle应用于使用GetFormat或GetBuiltinFormat作为“#,#0”的单元格时,同样不会在单元格中呈现。我错过了什么吗?
例如,在单元格上呈现的数字应显示为10,000,而在单击时,公式栏应显示为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;
目前它渲染为10000,在公式栏中也显示相同。虽然所需的细胞含量是10,000,而在配方条中它应该是10000
如果我删除将其转换为不变文化的objVal部分,则它在单元格和公式栏中显示为10000.00
答案 0 :(得分:1)
在使用SetCellValue进行分配之前,将cellvalue转换为double类型而不是字符串解决了问题。
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;
将其指定为字符串会导致所需的格式丢失。