首先用户使用Ireport工具设计 jasperReport报表模板,在程序通过动态数据,结合模板生成报表 !JasperReport生成PDF依赖IText,生成图表依赖Jfreechart :(注意:在用工具画图时不要太大,否则导出的PDF文件将不完整)
//如果是maven工程要引入相应的jar包
<!-- groovy -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.2.0</version>
</dependency>
<!-- jasperreport -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.2.0</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
Java代码
注意:region.jrxml 为 JasperReport工具链接数据库生成的文件(所需要导出的资源)
@Autowired
private DataSource dataSource;
@Action(value="regionAction_exportJaspar")
public String exportJaspar(){
try {
// 1: 加载设计文件 report2.jrxml
String path = ServletActionContext.getServletContext().getRealPath("/jr/region.jrxml");
// 2: 报表 parameter 赋值 需要Map集合 parameters为 region.jrxml里面设置的
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("company", "杰瑾工作室");
// 3: 编译该文件 JasperCompilerManager
JasperReport report = JasperCompileManager.compileReport(path);
// 4: JapserPrint = JasperFillManager.fillReport(report,map,connection)
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource.getConnection());
// 5: 下载 准备一个流 两个头
HttpServletResponse response = ServletActionContext.getResponse();
ServletOutputStream outputStream = response.getOutputStream();
String filename = "工作单报表.pdf";
response.setContentType(ServletActionContext.getServletContext().getMimeType(filename));
response.setHeader("Content-Disposition", "attachment;filename=" + DownLoadUtils.getAttachmentFileName(filename, ServletActionContext.getRequest().getHeader("user-agent")));
// 6: JapdfExport 定义报表输出源
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
// 7: 导出
exporter.exportReport();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return NONE;
}
如果启动Tomcat报错:找不到相应的类的话,多数原因是Jar包冲突! 查看web模块的依赖树,找到冲突的包,采用高版本的排除低版本