无法使用 Apache Poi evaluate 评估 Match

Unable to evaluate Match using Apache Poi evaluate

提问人:Doofenshmirtz 提问时间:9/27/2021 最后编辑:Doofenshmirtz 更新时间:9/28/2021 访问量:174

问:

我正在尝试使用 Apache Poi 评估器评估 XSSF 工作表中的公式单元格。

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
System.out.println(evaluator.evaluate(cell));

单元格有这个公式

MATCH(1,('refsheet'!$A$1:$A$10=$C$1)*('refsheet'!$B$1:$B$10>=$D$1),0)

和 sysout 打印输出 -

org.apache.poi.ss.usermodel.CellValue [#N/A]

A1 - A10、B1 - B10 、C1 和 D1 均为数字

pom.xml

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

我不明白为什么我会得到 #N/A

在 Excel 工作表中获取正确的值

我做错了什么

任何建议将不胜感激

Java Excel-公式 Apache -POI 匹配

评论

2赞 Axel Richter 9/27/2021
你用的是什么版本?该公式是一个数组公式。最高版本无法正确评估此类数组公式。但是,即使计算,该公式也会导致 if 或 if true。apache poiMATCH(1,('refsheet'!$A$1:$A$10=$C$1)*('refsheet'!$B$1:$B$10>=$D$1),0)3.17#N/A'refsheet'!$A$1:$A$10=$C$1'refsheet'!$B$1:$B$10>=$D$1
0赞 Doofenshmirtz 9/27/2021
@Axel Richter 我有 3.10,我会尝试升级版本。但是,两个 refsheet 表达式都是真的,我在 ms excel 中得到了一个正确的值
0赞 Doofenshmirtz 9/28/2021
@Axel Richter,您能否提出一个替代方法,也许可以覆盖数组公式的计算。我尝试升级版本,但版本升级会影响应用程序中的许多其他事情,因为版本 4 发生了重大变化。如果可能的话,任何建议。感谢您的评论
0赞 Doofenshmirtz 9/28/2021
@Axel Richter 我用 4.1.2 更新了 pom.xml构建了它,但仍然获得相同的输出 #N/A,还用当前的 pom 更新了问题。我做错了什么?两个 refsheet 表达式肯定对几行都返回 true,并使用单独的输出再次检查
0赞 Axel Richter 9/28/2021
无法复制。对我来说,评估公式是正确的。请展示一个可重现的示例(完整的代码、、 和 中的值)。还要确保,真的被使用了。也许任何地方都有旧版本的文物?apache poi 4.1.2=MATCH(1,(refsheet!$A$1:$A$10=$C$1)*(refsheet!$B$1:$B$10>=$D$1),0)refsheet!$A$1:$A$10refsheet!$B$1:$B$10$C$1$D$1apache poi 4.1.2

答: 暂无答案