DisplayTag,可能大部分人都用过,也知道他非常的方便。但也有人说,他有些臃肿,小问题很多。譬如今天遇到导出Excel文件内容的中文乱码问题,官方给出的方案是:
displaytag.properites文件中加入:
export.excel.class=org.displaytag.export.excel.ExcelHssfView
同时加入依赖包:
- displaytag-export-poi-1.2.jar
- itext-asian-5.2.0.jar
貌似问题就这么解决了!
可是我还处理了Excel文件导入,尤其是Excel2007。displaytag-export-poi-1.2.jar设计的时候,使用的poi-3.2-FINAL.jar。为了解决Excel2007,我用了poi-3.8.jar,这两版本的代码发生了微妙的变化:
poi-3.2-FINAL.jar
public class HSSFCell implements Cell {
public void setCellValue(HSSFRichTextString value){
}
}
poi-3.8.jar
public class HSSFCell implements Cell {
public void setCellValue(RichTextString value){
}
}
RichTextString是一个接口,最初的HSSFRichTextString并没有实现该接口,而后续的版本发生了这个变化。这就导致了displaytag-export-poi-1.2.jar在使用该方法时,找不到对应方法的问题。
解决这个问题,需要在依赖poi-3.8.jar重新编译该方法的调用:
public class ExcelHssfView implements BinaryExportView {
public void doExport(OutputStream out) throws JspException
{
...
cell.setCellValue(new HSSFRichTextString(columnHeader));
...
}
}
就这么简单。用maven管理代码,对于这种高低版本的引用还是差了点,难免会遇到高版本不能向下兼容的问题。
附编译好的jar包,供需要的人使用。