Excel导出单元格数值不能做计算

问题复现

项目中最开始导出Excel,都是以String类型调用创建单元格,这样导致的问题是:

使用函数计算求和或者平均值都会为0

image-20200508162808607

那么,如何能将这些改为可计算的呢?

方法

核心类 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创建单元格的三种方法, 可以看出方法被重载了三次

  1. String
  2. double
  3. Date

而之前的导出,我将所有字段都设置为了String,包括数字。

再进一层,看下 HSSFCell这个类

在这里插入图片描述

可以看到,有5中原生类型,除了上面项目代码封装的3中,还有Calendar 和 RichTextString,即富文本类型,也就是如果是数值就用double,是日期用date,富文本用富文本,这样Excel对应的功能都可以用了

所以进行修改:将第三个参数改为数值类型就行

ExportExcelUtil.createCell(row, j++, 0, styleTextCenter);

看效果

image-20200508163326603

问题解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值