gpt4 book ai didi

java - Apache POI 公式未评估

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:12 25 4
gpt4 key购买 nike

所以我在让 Apache POI 评估公式时遇到了一些问题。

这是我在编写之前调用的用于评估公式的代码:

complete.getCreationHelper().createFormulaEvaluator().evaluateAll();
complete.write(fileOut);

这是我调用的代码,用于写入正在使用的单元格(证明它们是数字):

try{
cell.setCellValue((Double)grid[i][j]);
}
catch(Exception e){
cell.setCellValue((String)grid[i][j]);
}

仅供引用:grid 是一个二维 Object 数组,仅包含 doubleString 类型的条目。

这是我要计算的公式:

"=G13 - H13"

"=STDEV.P(C1:L1)"

"=I13/G13"

知道为什么当我在 Excel 中打开我的最终工作簿时公式没有被计算吗?此外,当我单击一个未计算的字段并按回车键时,Excel 将识别该公式并对其进行计算。大体上这是不切实际的,但我相信它表明所使用的电池是正确的类型。这可能与 String 类型的公式有关吗?

编辑:

好的,看来您应该明确告诉它您有一个公式单元格。这是我修改后的代码:

try{
cell.setCellValue((Double)grid[i][j]);
}
catch(Exception e){
String val = (String) grid[i][j];
if (val != null && val.startsWith("=")){
val = val.replaceAll("=", "");
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(val);
}
else{
cell.setCellValue(val);
}
}

不幸的是,您需要删除等号(这是愚蠢的)才能传递公式,然后强制它在保存之前重新计算(这是愚蠢的)。然而,在试图让它重新评估公式后,它提示说:

Caused by: org.apache.poi.ss.formula.eval.NotImplementedFunctionException: STDEV.P

我在想,这意味着 Excel 已经实现了标准差计算,但 POI 还没有跟上?

最佳答案

试试这个:

XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);

或者,如果您使用的是 xls

HSSFFormulaEvaluator.evaluateAllFormulaCells(hssfWorkbook)

您可能想在保存之前调用它。

关于java - Apache POI 公式未评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com