Apache POI中的错误AutoFilter

时间:2015-03-26 12:57:47

标签: java excel apache-poi jboss6.x

我遇到的问题是,当我尝试添加自动过滤器时,我会收到另一个错误,如果我可以提供帮助,请在这里留下代码,谢谢:

prueba.setAutoFilter(CellRangeAddress.valueOf((new AreaReference(new CellReference(0, 0), new CellReference(tmp.datos.size() - 1, tmp.columna.size() - 1))).formatAsString()));

这是错误:

Exception in thread "main" java.lang.AbstractMethodError:  org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.get3DReferencePtg(Lorg/apac he/poi/ss/util/AreaReference; Lorg/apache/poi/ss/formula/SheetIdentifier;) Lorg/apache/poi/ss/formula/ptg/Ptg;
at org.apache.poi.ss.formula.FormulaParser.createAreaRefParseNode(FormulaParser.jav a:614)
at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:449)  
at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java: 237)
at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:112 6)
at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1086)  
at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1073) 
at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1433)
at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1533)
at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1517)
at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1474)
at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1454  
at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:1575)
at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:145)
at org.apache.poi.xssf.usermodel.XSSFName.setRefersToFormula(XSSFName.java:195) 
at org.apache.poi.xssf.usermodel.XSSFSheet.setAutoFilter(XSSFSheet.java:3138) 

1 个答案:

答案 0 :(得分:1)

这里有三个问题。首先,如this Apache POI FAQ entry

中所述
  

我可以混合使用不同版本的POI广告吗?

     

没有。这不受支持。

     

所有正在使用的POI罐必须来自同一版本。不支持poi-3.11.jar和poi-ooxml-3.9.jar等组合,并且无法以不可预测的方式工作。

所以,正如你已经说过你有3.9和3.11罐的混合物,那就是你的问题,这是不受支持的。你的所有罐子都需要是相同的版本

其次,正如评论中所讨论的那样,如果您无法确定您正在使用的POI罐子,那么您需要按照the directions in this POI FAQ Entry 完全描述您的案例,有方便的代码,以帮助您找到您正在使用的罐子,这可能不是您意味着使用的罐子!

最后,有一个[关于java.lang.NoClassDefFoundError的POI FAQ:javax / xml / stream / XMLEventFactory.newFactory()]](http://poi.apache.org/faq.html#faq-N1017E),这也解释了这一点。我建议使用更新,更少损坏的JVM,但更新的POI(每晚或3.12 beta 2)应该有一个解决方法

基本上,Apache POI FAQ page让你完全覆盖......