日期:2014-05-16  浏览次数:20310 次

使用primefaces的JSF做一个文件上传功能所遇到的问题(5)
   使用primefaces-2.2.RC2.jar配合POI-3.7.jar处理导出excel功能的时候,会有这样的错误:

java.lang.NoSuchMethodError:
org.apache.poi.hssf.usermodel.HSSFCell.setCellValue(Lorg/apache/poi/hssf/usermodel/HSSFRichTextString;)V
        at org.primefaces.component.export.ExcelExporter.addColumnValue(ExcelExporter.java:88) ~[primefaces-2.2.RC2.jar:na]
        at org.primefaces.component.export.ExcelExporter.addColumnHeaders(ExcelExporter.java:80) ~[primefaces-2.2.RC2.jar:na]
        at org.primefaces.component.export.ExcelExporter.export(ExcelExporter.java:46) ~[primefaces-2.2.RC2.jar:na]
        at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:93) ~[primefaces-2.2.RC2.jar:na]


这样的错误有两个解决的办法:
第一:更新primefaces的jar到3.1的版本,这个我测试过,没有问题。但是你需要修改很多内容,界面啊,配置啊,很繁琐,不适合一个已经成型的项目。
第二:修改源代码,编译以后修改jar。如果是上面的错误的话,只需要ExcelExporter.java这个类,我是把原来的代码
cell.setCellValue(new HSSFRichTextString(value));

替换成了
System.out.println("Value is :"+value);
HSSFRichTextString hssfRichTextString = new HSSFRichTextString(value);
cell.setCellValue(hssfRichTextString);

然后 测试就没有问题了