我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
但是在这一步: 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)
Run Code Online (Sandbox Code Playgroud)
有人可以建议,这可能是什么原因?
你似乎有不匹配的罐子.根据你的评论,你说你有POI 3.9 .... poi-ooxml-3.5.你必须有匹配的罐子,所以POI-3.9和POI-OOXML-3.9.您不能混合和匹配项目不同部分的新旧罐子.
如果您需要帮助来确定罐子的来源(例如您的应用程序框架是捆绑旧的),请参阅此POI FAQ条目.要检查Apache POI的不同部分的依赖关系,请参阅" 组件"页面
您要么将所有POI罐子更新到3.9最终版,要么全部更新为3.10 beta 1(截至2013年7月的最新版本)