我正在使用POI来读取用户的excels文件。 在其中一个单元格中,我有这个公式:
IF(H24>0,((D24*(Q24))/((3600*H24)/I24))+IF(AND(N24>0,L24>0),(D24*L24*(Q24)/N24),0),0)
当N24的值为0时,问题就出现了。在这种情况下,POI返回DIV / 0错误,但我不明白为什么..因为IF(N24> 0)测试。
无论如何,我尝试更改公式并仅保留最新部分,如下所示: IF(N24> 0,D24 * L24 *(Q24)/ N24),0)=>仍然不起作用。
评估我使用的公式: FormulaEvaluator evaluationator = wb.getCreationHelper()。createFormulaEvaluator(); switch(evaluator.evaluateFormulaCell(cell))
.....
我正在使用POI 3.10,与3.11相同的pb
有什么想法吗?
答案 0 :(得分:0)
我们找到了绕道。 当使用evaluateFormulaCell方法时,无法获得catchedValue。
通过使用valuator.evaluate(cell),我们仍然有错误但我们可以得到catchedValue。
答案 1 :(得分:0)
发现编程错误; 为了获得很长时间,开发人员对此进行了编码:
感谢您的回复并抱歉...
我发现了编程错误。
为了解决问题,开发人员使用了这种方法:
public static Object getCellValue(Row row, int index) {
if (row == null || row.getCell(index) == null) {
return null;
}
Object retour = null;
Cell cell = row.getCell(index);
cell.setCellType(Cell.CELL_TYPE_STRING);
String val = cell.getStringCellValue().trim();
if (val != null && !"".equals(val)) {
retour = cell.getStringCellValue();
}
return retour;
}
gulty是:cell.setCellType(Cell.CELL_TYPE_STRING); ....