gpt4 book ai didi

Apache POI 和 SUMPRODUCT 公式评估

转载 作者:行者123 更新时间:2023-12-04 21:17:34 29 4
gpt4 key购买 nike

我有一个模板 XLS 文件,我使用 Apache POI 加载并在其中写入大量数据,然后将其另存为另一个文件。
我的 XLS 文件中有这样的公式:

=SUMPRODUCT((DS!B:B="IN_THIS_ONLY")*(DS!D:D="New trade"))

也试过
=SUMPRODUCT(0+(DS!B:B="IN_THIS_ONLY"),0+(DS!D:D="New trade"))

如果我在 Excel 中的单元格上按 Enter,这些评估正确。
但是,只需调用
HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);

似乎没有评估它们,也没有按下 Excel 中的“立即计算”按钮 - 所以我想这是一个特殊的公式或函数。

另一个更传统的 COUNTIF s 和 SUMIF s 工作正常,但是这些不允许指定多个条件。

POI 不支持数组公式。

有什么办法可以使这些工作。我正在使用 POI 3.7 版。

最佳答案

可按 CTRL-ALT-F9 在 Excel 中强制手动重新评估所有公式。

这是让它在工作簿打开时自动工作的技巧。

将以下内容添加到您的公式中:

+(NOW()*0)

例如,我的 SUMPRODUCT上面变成
=SUMPRODUCT((DS!B:B="IN_THIS_ONLY")*(DS!D:D="New trade"))+(NOW()*0)

这行得通! Excel 现在会在打开时重新计算我的特殊公式单元格。

原因是 NOW()是一个不稳定的函数。这是我了解到的: http://msdn.microsoft.com/en-us/library/bb687891.aspx
Application.CalculateFull也可以,但仅适用于 Excel 2007 及更高版本(当然,必须启用宏才能运行)。不幸的是,在我的情况下,即使我使用 Excel 2007,我的工作簿也会被 Excel 2003 用户打开,所以这不是一个选项。

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

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