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 遇到运行时异常的主要内容,如果未能解决你的问题,请参考以下文章

java poi的使用问题

Java导入excel

JAVA读取Excel200320072010教程

java读取Excel表的数据

Apache-POI:“无法解析符号”

写入XWPFTable单元格时,将忽略Java Apache POI换行符