Excel导出数字列,熬到两点半,从源码中才找到解决方案
dynamic workbook = new HSSFWorkbook(); ICellStyle cellStyle = workbook.CreateCellStyle(); IDataFormat format = workbook.CreateDataFormat(); cellStyle.DataFormat = format.GetFormat("0.00"); cell.CellStyle = cellStyle; cell.SetCellType(CellType.Numeric); cell.SetCellValue(Convert.ToDouble(dt.Rows[j][cols[i]]));
总结:多看看源码,看NPOI的源码,里面有实例
注意:
① 这是2.1.3.1版本的用法,更高的版本命名类的命名规则不同,比如接口会带HSSF前缀,而不是I前缀
② cellStyle 在一个Excel中不能超过4K个,否则会报错,最好定义几个全局style,需要的时候赋值即可
③ 不过NPOI需要挨个单元格创建就真的有点变态了,好处是可以设置每个单元格的样式,