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 3.1获取公式单元格值(数据)
使用 Apache POI 从 Java 应用程序删除行时 Excel 公式未更新