使用POI处理Excel中公式不能自动计算出来的问题

提供一个sheet页模板,让用户填写数据,然后上传到服务器,服务器将用户上传的数据,复制到服务器中的模板的相应Sheet页上,再通过excel的公式将计算结果(多行多列)反馈给上传用户,在POI的复制和计算过程中,因公式复杂,公式项多,sheet页多,在调用XSSFFormulaEvaluator.evaluate()方法时导致内存占用过大,GC频率过高,甚至OOM,有什么方法可以解决。
现将用户数据赋值到了服务器模板,在不通过XSSFFormulaEvaluator.evaluate()计算时取excel单元格数据为模板的值,没有刷新。或者有没有什么方法,在获取用户上传数据赋值到服务器模板中,调用excel的公式执行方法?再读取模板中的值……

5个回答

使用POI导入了拥有公式的Excel模板后,发现其中原有公式单元格计算出来的值不能正常显示出来,需要重新刷新该公式后方可正常得出计算结果.
针对此问题,写了一个测试,代码如下:
package cn.fory.formula;
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.......
答案就在这里:使用POI处理Excel中公式不能自动计算出来的问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

xxcb1234
xxcb1234 不是结果计算不出来,是不想计算,因为公式复杂,计算消耗内存太多
大约 5 年之前 回复
xxcb1234
xxcb1234 不是结果计算不出来,是不想计算,因为公式复杂,计算消耗内存太多
大约 5 年之前 回复
xxcb1234
xxcb1234 不是结果计算不出来,是不想计算,因为公式复杂,计算消耗内存太多
大约 5 年之前 回复

用jxl试试呢。。。。。。。。。。。。。

dcxy0
Q544471255 回复xxcb1234: 你这个涉及到实时性,建议用户上传之后,先统一使用线程进行公式计算,最后在使用poi导出,不要边导出边计算。另外你可以设置一个值,比如最大十个线程,超过的,需要排队等待。这样基本可以缓解你系统的压力。
大约 5 年之前 回复
xxcb1234
xxcb1234 07版本的excel,貌似不支持吧!现在的问题是用poi的计算公式可以出来,但是内存消耗太大。
大约 5 年之前 回复

不是结果计算不出来,是不想计算,因为公式复杂,计算消耗内存太多

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问