我正在尝试使用以下代码使用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)
有人可以建议,这可能是什么原因?
答案 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月的最新版本)