最近研究jasperreport整合struts2 总结一下以备后用
struts2是借助于struts2-jasperreports-plugin-2.0.14.jar整合jasperreport的其中主要的实现在JasperReportsResult.class中的doExecute方法封装了生成报表的实现,是通过valuestatck得到数据源的,他实现了ValueStackDataSource,实现JRDataSource接口,JRDataSource接口的子类很多,具体情况具体分析吧,JRDataSource接口有两个方法,getFieldValue和next,今天做的时候老是得不到值,研究了好久,通过debug发现fieldDescription为空,原来通过ireport生成的jrxml文件里面的fieldDescription为空(或许是我没有正确生成?),自己没有自动生成,另外把查出来的值封装到一个javabean中,字段名一定要和fieldDescription中的名字保持一致(比如:bean中用的SID那么描述中也要用SID),
在doExecute方法中封装了xls,xml,html,pdf的实现,struts2对excel的封装不是很好,格式很乱,可以通过继承JasperReportsResult重写doExecute方法来修改里面的实现,具体的生成不同格式的不同实现明天再研究在记录
继承JasperReportsResult的类重写doExcute方法,在方法中添加下面代码:
else if (format.equals(FORMAT_XLS)) {
response.setContentType("application/vnd.ms-excel");
exporter = new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS,Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);//移除空白
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);//--背景色
}
仅做备用用。。。。