java.lang.NoSuchMethodError:org.apache.poi.ss.formula.FormulaParser.parse

时间:2013-08-01 10:38:01

标签: java apache-poi

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

 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)

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

1 个答案:

答案 0 :(得分:5)

您似乎有不匹配的罐子。根据您的评论,您说您有POI 3.9 .... poi-ooxml-3.5。您必须具有匹配的jar,因此POI-3.9和POI-OOXML-3.9。您不能混合和匹配项目不同部分的新旧罐子。

如果您需要帮助来确定您的罐子来自哪里(例如您的应用程序框架是捆绑旧的),请参阅this POI FAQ entry。要检查Apache POI的不同部分的依赖关系,请参阅Components page

您要么将所有POI罐子更新为3.9最终版,要么全部更新为3.10 beta 1(截至2013年7月的最新版本)