在项目中使用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就会计算了。