问题复现
项目中最开始导出Excel,都是以String类型调用创建单元格,这样导致的问题是:
使用函数计算求和或者平均值都会为0
那么,如何能将这些改为可计算的呢?
方法
核心类 ExportExcelUtil
, 下面是核心代码
public static void createCell(HSSFRow row, int j, String value, HSSFCellStyle styleTextCenter) {
HSSFCell cell = row.createCell(j++);
cell.setCellValue(value);
cell.setCellStyle(styleTextCenter);
}
public static void createCell(HSSFRow row, int j, double value, HSSFCellStyle styleTextCenter) {
HSSFCell cell = row.createCell(j++);
cell.setCellValue(value);
cell.setCellStyle(styleTextCenter);
}
public static void createCell(HSSFRow row, int j, Date value, HSSFCellStyle styleTextCenter) {
HSSFCell cell = row.createCell(j++);
cell.setCellValue(value);
cell.setCellStyle(styleTextCenter);
}
这是poi创建单元格的三种方法, 可以看出方法被重载了三次
- String
- double
- Date
而之前的导出,我将所有字段都设置为了String,包括数字。
再进一层,看下 HSSFCell
这个类
可以看到,有5中原生类型,除了上面项目代码封装的3中,还有Calendar 和 RichTextString,即富文本类型,也就是如果是数值就用double,是日期用date,富文本用富文本,这样Excel对应的功能都可以用了
所以进行修改:将第三个参数改为数值类型就行
ExportExcelUtil.createCell(row, j++, 0, styleTextCenter);
看效果
问题解决