读取数据的过程中已经采用公式对数据进行处理,依旧出现报错的情况。
FormulaEvaluator evaluator=cell.getSheet()
.getWorkbook()
.getCreationHelper()
.createFormulaEvaluator();
evaluator.evaluateFormulaCell(cell);
CellValue cellValue = evaluator.evaluate(cell);
问题出现可能的原因
1、公式计算出错
2、公式依赖的数据缺失
3、poi不支持部分excel特有的函数
4、excel处理字段属性兼容,poi对格式有要求
分析报错的字段,是采用YEAR公式取另一列的数据的年份,由于excel文件中公式计算并没有出错,正常显示计算后的值。所以首先考虑字段属性的问题,即另一列数据可能为字符串,excel处理没错,poi处理会出错。
解决方法
由于本项目采用封装好的方法读取数据,首先考虑对excel数据格式进行纠错,将另一列的数据设置为日期后,测试发现依旧报错,于是在公式列将YEAR处理的数据进行格式转换,即=YEAR(DATEVALUE(X3)),报错解决。
此外,若代码改起来方便,可以考虑直接读取excel计算结果的缓存值,此方式需要保证excel文件公式计算正确且无修改。
CellType cachedType = cell.getCachedFormulaResultType();
3498

被折叠的 条评论
为什么被折叠?



