java apache poi shift Rows 遇到运行时异常
Posted
技术标签:
【中文标题】java apache poi shift Rows 遇到运行时异常【英文标题】:java apache poi shifting Rows runs into a runtime exception 【发布时间】:2014-03-05 07:32:24 【问题描述】:我有一个简单的 Excel 表,其中包含基本的 Excel 公式,例如总和,以及从另一个单元格中检索值。现在,我想在现有的两行之间插入一个空行(我查看了How to insert a row between two rows in an existing excel with HSSF (Apache POI),但遇到了一些奇怪的错误)。
所以我尝试通过这样做来移动行:
worksheet.shiftRows(15,16,2);
我得到了回报:
Exception in thread "main" java.lang.RuntimeException: not implemented yet
at org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getExternalSheetIndex(XSSFEvaluationWorkbook.java:127)
at org.apache.poi.ss.formula.FormulaParser.createAreaRefParseNode(FormulaParser.java:615)
at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:462)
at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:268)
at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1119)
at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1079)
at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1066)
at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1426)
at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1526)
at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1510)
at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1467)
at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1447)
at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:1568)
at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:176)
at org.apache.poi.xssf.usermodel.helpers.XSSFRowShifter.updateNamedRanges(XSSFRowShifter.java:116)
at org.apache.poi.xssf.usermodel.XSSFSheet.shiftRows(XSSFSheet.java:2363)
at org.apache.poi.xssf.usermodel.XSSFSheet.shiftRows(XSSFSheet.java:2306)
at com.shel.myProgram.workbook.copyAndInsert(workbook.java:120)
at com.shel.myProgram.workbook.test(workbook.java:111)
at com.shel.myProgram.driver.main(driver.java:24)
编辑:
我正在使用这个依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
【问题讨论】:
查看 org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook 第 127 行。可能在您的库中,此功能“尚未实现” @ThrashBean 我得到的 127 不是 org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook 中的有效数字......我很困惑。事实上,该文件似乎是空的。我正在使用 apache poi 3.9 版 是的,它没有实现。 3.10-beta2 和 3.11-beta1(最新的夜间版本)都没有。所以你必须寻找其他方法来做到这一点。只是好奇 - 你在使用 xlsx 吗? 是的,但宏已启用。 @ThrashBean 看起来您有一个有问题的命名范围,POI 正在努力为班次更新。您有机会在工作表中发布任何非标准命名范围吗? 【参考方案1】:试试这个。 sheet.shiftRows(currentRow, sheet.getLastRowNum()+1, amount, true,true);
【讨论】:
以上是关于java apache poi shift Rows 遇到运行时异常的主要内容,如果未能解决你的问题,请参考以下文章