Apache POI 公式未计算

2023-11-25

因此,我在让 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]);
}

FYI: grid是一个二维Object仅包含该类型条目的数组double and String.

这是我试图评估的公式:

“=G13 - H13”

“=STDEV.P(C1:L1)”

“=I13/G13”

有什么想法为什么当我在 Excel 中打开我的最终工作簿时,公式没有被计算?另外,当我单击未计算的字段并按 Enter 键时,Excel 将识别该公式并对其进行计算。总的来说,这是不切实际的,但我相信它表明所使用的电池是正确的类型。这是否与公式有关String type?

EDIT:

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

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);
   }
}

不幸的是,您需要删除等号(这是愚蠢的)来传递公式,然后强制它在保存之前重新评估(这是愚蠢的)。然而,在试图让它重新评估公式后,它抱怨道:

造成原因: org.apache.poi.ss.formula.eval.NotImplementedFunctionException: 标准差值

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


尝试这个:

XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);

或者,如果您使用的是 xls

HSSFFormulaEvaluator.evaluateAllFormulaCells(hssfWorkbook)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache POI 公式未计算 的相关文章

随机推荐

  • Julia 中使用匿名函数的性能损失

    我注意到在 Julia 中使用匿名函数会带来性能损失 为了说明这一点 我有两个快速排序的实现 取自 Julia 发行版中的微观性能基准 第一个按升序排列 function qsort a lo hi i j lo hi while i lt
  • time.time 与 timeit.timeit

    有时 我喜欢计算部分代码的运行时间 我检查了很多在线网站 大致上看到了两种主要方法 一种正在使用time time另一个正在使用timeit timeit 因此 我编写了一个非常简单的脚本来比较两者 from timeit import t
  • Google 脚本仅在工作日触发

    我有一个用 Google 文档创建的工具 其中一部分是我每天上午 11 点备份一组数字 我用它来创建一个图表来显示一段时间内的进度 我使用触发器运行此脚本 该触发器设置为每周备份一次数据 我真正想做的只是在工作日备份这些数据 因为周末的数据
  • 集群环境下运行的Spring定时任务

    我正在编写一个应用程序 它有一个每 60 秒执行一次的 cron 作业 该应用程序配置为在需要时扩展到多个实例 我只想每 60 秒在 1 个实例上执行该任务 在任何节点上 我找不到开箱即用的解决方案 而且我很惊讶以前没有多次询问过这个问题
  • 如何获取字符串中给定名称的变量的值? [复制]

    这个问题在这里已经有答案了 为简单起见 这是我想要做的事情的精简版本 def foo a I want to print the value of the variable the name of which is contained in
  • 修复了位置在 Windows Safari 上不起作用的问题

    我的画廊有问题 位置 固定 并且网站内容正在其上滚动 该位置固定在每个浏览器中都有效 除了 Windows 7 上的 Safari 是的 它甚至在 IE8 和 Mac 上的 Safari 中也有效 顶部已定义 但它仍然充当相对位置并与其余内
  • Androidcamera2 API获取AF模式下的焦距

    我正在使用 Android Camera2 API 我可以在手动对焦模式下使用 LENS FOCUS DISTANCE 获取焦距值 然而 在 AF 模式下该属性始终为零 有什么方法可以获取AF模式下的焦距吗 距镜片最前表面的最短距离 成为焦
  • JSF 2 ui:repeat:将 div 内的每 n 个项目分组

    给定一个集合 我想在这样的页面上排列 div div div div div div div div div div div div div div div div
  • Android 中 Json 到 POJO 的映射

    在 Android 中通过 Rest Framework 处理 json 有哪些好的做法 例如 如果我得到如下所示的某个 json 结果 或任何其他结果 我只是给出更复杂的结果 lifts id 26 time 2012 11 21T12
  • iPhone 和 Android 可以录制和播放哪种音频格式?

    我正在设计一个应用程序 可以在 iPhone 和 Android 上录制短音频文件 并可以在这两个平台上播放 希望也可以在任何其他智能手机上播放 现在我正在使用 caf 和 iLBC 编解码器 因为我知道 iPhone 不编码 mp3 在这
  • 大规模编排与编排的面向服务的架构?

    我是一家大型金融公司的架构师 我们正开始在不同国家实施一个新的面向业务的信息系统 从一开始 核心思想就是尽可能遵循面向微服务的原则 并确保工程师已阅读 Sam Newman 撰写的 构建微服务 一书 现在我已经来到了十字路口 我们的服务主要
  • 从 COPY 命令获取行数

    从文件复制数据时 您可以使用 命令标签 获取 psql 中的行数 db COPY t FROM var lib postgres test sql COPY 10 我需要行数并希望避免冗余count 在桌子上 有没有办法得到这个计数COPY
  • 安全地从字典中删除多个键

    我知道如何删除条目 key 从我的字典里d 安全 你做 if d has key key del d key 但是 我需要安全地从字典中删除多个条目 我正在考虑定义元组中的条目 因为我需要多次执行此操作 entities to remove
  • MongoDB 副本集没有主节点,需要强制创建新的主节点

    我们有一个 mongoDB 副本集 有 3 个节点 Primary 中学 Arbiter 不知何故 我们的副本集最终 1 和 2 都被设置为次要成员 我不确定这是如何发生的 我们进行了服务器迁移 其中一个节点在其上运行 但只有一个 不管怎样
  • Google 地图 API:标记图像定位

    我已经更改了用于marker在谷歌地图上 新图像比旧图像宽得多 我注意到标记与旧图像对齐lat and lng以便标记位于其水平中点上方lat and lng 这不是我想要的 我想要的是lat and lng与左侧的标记对齐 我想偏移mar
  • “溢出”编译器错误 -9223372036854775808L

    的范围长数据类型 is 9223372036854775808 to 9223372036854775807 但以下语句会生成编译器错误 BC30036 溢出 Dim a As Long 9223372036854775808L 在线尝试一
  • HTML/CSS - 为什么打印时背景颜色变成白色?

    打印时 我的背景颜色甚至元素的字体颜色突然变成白色 这是一个示例标记 div div
  • Crystal Report(或 SSRS)在图像周围流动文本

    我想在水晶报表中有这样的布局 我怎样才能做到这一点 如果无法在 CR 或 SSRS 中完成 是否还有其他替代方案 我不相信水晶报表可以做到这一点 我对 SSRS 不太熟悉 但在查看了现场选项后 我也不相信它可以用它来完成 通常 现场位置在报
  • 实体框架批量插入抛出 KeyNotFoundException 错误

    我在用EF6并且由于速度低AddRange 我需要使用的方法BulkInsert 所以我通过以下方式添加了 BulkInsert for EF6 的 NuGet 包here 添加后我收到的第一件事dll是这个警告 发现同一依赖的不同版本之间
  • Apache POI 公式未计算

    因此 我在让 Apache POI 评估公式时遇到一些问题 这是我在编写之前调用的用于评估公式的代码 complete getCreationHelper createFormulaEvaluator evaluateAll complet