jxls--使用模版导出excel,单元格无法自动计算问题解决

本文介绍了在使用jxls库导出Excel时遇到的单元格计算公式不生效的问题,并提供了通用的解决方案。通过创建`HSSFFormulaEvaluator`对象并调用`evaluateInCell`方法,可以确保公式在写入Excel文件之前得到正确计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中使用jxls导出excel ,coding可以很少很少,excel报表格式可以很复杂同时也可以有很漂亮的样式,不再用网页导出这种很恶的方式来面对头痛的格式问题。

 jxls也是通过poi的api来操作excel,利用定义好格式的模版再加上一些标签语言就可以操作数据了。

 

具体的操作参考jxls的实例就好了,下面我要说的是jxls模版上的计算公式无法正常计算的解决办法。见以下模版rowstyle.xls,在E6,E7上分别有计算公式:$[C6*(1+D6)],$[sum(E6)],

 

对实例不做任何修改,直接运行main方法:

 

 

结果计算单元格E6~E7并没有正常显示计算结果,而是显示的0,然而我们可以看到单元格内的计算公式仍然在那里,在公式最后我们敲回车则正常显示计算结果,显然这种显示方式一点也不直观。要解决这个问题的话我们就需要把单元格计算公式先计算再设置到单元格里。以下,提供一个通用的方法:

 

这里主要是:

HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(wb);  

cell=e.evaluateInCell(cell);

代码还是比较简单滴。

 

再修改main方法,再输出excel之间调用一哈:

跟着代码测试的童鞋们是不是还发现了一个问题昵?含有$[sum(E6)]计算公式滴单元格仍然没有计算, department.addEmployee五条记录put 进入了map beans占了5行,再加上表头占4行,而最后一行sum计算公式并没有动态的算进去,如果我们把row的size改为10,那么sum就会计算了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值