Apache POI:在公式中使用表列名

Posted

技术标签:

【中文标题】Apache POI:在公式中使用表列名【英文标题】:Apache POI: using table column names in formula's 【发布时间】:2015-07-24 13:05:29 【问题描述】:

我在现有工作表中有一个表格,我想添加更多行,复制现有公式。 问题似乎是 apache POI 公式解析器并没有完全得到 excel 中使用的语法:我的公式如下所示:

=[@[column1_name]]/[@[column2_name]]

它被读成这样的东西:

Summary[[#This Row],[column1_name]]/Summary[[#This Row],[column2_name]]

(表的名称是“摘要”)。但是,尝试评估公式失败了

|FormulaParseException Specified named range 'Summary' does not exist in the current workbook.  org.apache.poi.ss.formula.FormulaParser.parseNonRange (FormulaParser.java:547)                                                     

有人遇到过同样的问题吗?提出的解决方案?

【问题讨论】:

顺便说一句,现在我正在做一些非常丑陋的事情:=INDIRECT("H"&ROW())/INDIRECT("E"&ROW()),但这真的不是要求用户添加公式的好方法... 感谢您的解决方法。找到一个合适的方法来解决这个问题仍然很好,但是现在,间接函数对我有用 【参考方案1】:

一个好的解决方法是在 excel 中取消引用表本身。您可以通过选择表格,右键单击并选择表格 -> 转换为范围来执行此操作。这会将所有公式更改为常规单元格引用。我知道这不是一种编程方式来解决,但它可以让你评估公式。

【讨论】:

以上是关于Apache POI:在公式中使用表列名的主要内容,如果未能解决你的问题,请参考以下文章

使用Apache POI处理excel公式不更新的解决办法

如何使用apache poi 3.1获取公式单元格值(数据)

使用 Apache POI 从 Java 应用程序删除行时 Excel 公式未更新

使用 Apache POI 从 Java 中的 Excel 中读取公式字段

如何使用apache poi从公式单元格中读取单元格值

Apache poi 固定Excel 表格导入数据库方法(列名对应数据库字段名)