1

我正在尝试使用以下代码使用 apache poi 在 excel 文件中创建一个命名范围。

 private static void createNamedRangesForGeneratedValues(final XSSFWorkbook workBook,                   final String name, final String cellAreaRange) {
        final Name cellRangeName = workBook.createName();
        cellRangeName.setNameName(name);

        final String reference = name + cellAreaRange; // "!A1:C5"; // area reference
        cellRangeName.setRefersToFormula(reference);

但是在这一步: cellRangeName.setRefersToFormula(reference);抛出以下异常。

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.ss.formula.FormulaParser.parse(Ljava/lang/String;Lorg/apache/poi/ss/formula/FormulaParsingWorkbook;II)[Lorg/apache/poi/hssf/record/formula/Ptg;
    at org.apache.poi.xssf.usermodel.XSSFName.setRefersToFormula(XSSFName.java:195)
    at test.java.ExcelSheetDropDownDataHandler.createNamedRangesForGeneratedValues(ExcelSheetDropDownDataHandler.java:186)
    at test.java.ExcelSheetDropDownDataHandler.generateCountryData(ExcelSheetDropDownDataHandler.java:93)
    at test.java.ExcelSheetDropDownDataHandler.generateData(ExcelSheetDropDownDataHandler.java:64)
    at test.java.ExcelSheetDropDownDataHandler.createDataTab(ExcelSheetDropDownDataHandler.java:50)
    at test.java.ExcelSheetDropDownDataHandler.main(ExcelSheetDropDownDataHandler.java:205)

有人可以建议,这可能是什么原因?

4

1 回答 1

5

你似乎有不匹配的罐子。从你的评论你说你有POI 3.9 .... poi-ooxml-3.5。你必须有匹配的罐子,所以 POI-3.9 和 POI-OOXML-3.9。您不能混合和匹配来自项目不同部分的新旧 jar。

如果您需要帮助确定 jar 的来源(例如,您的应用程序框架正在捆绑旧的),请参阅此 POI 常见问题解答条目。要检查 Apache POI 不同部分的依赖关系,请参阅组件页面

您要么想要将所有 POI jar 更新到 3.9 final,要么全部更新到 3.10 beta 1(截至 2013 年 7 月的最新版本)

于 2013-08-01T13:31:54.630 回答