报表技术之PDF格式报表生成 ----JasperResport
JasperReport简介
JasperReport:java提供的一个类库,承上启下,读取IReport生成的xxx.jrxml文件,获取到pdf中需要显示的全部内容,然后底层调用IText相关的方法,生成一个具体的PDF文档
IReport: 图形化报表开发工具(java swing编写的一个可视化工具) --->xxx.jrxml
IText:java提供的一套用于生成PDF文档的类库编写的代码.
报表技术之PDF格式报表生成 (JasperResport)
1.JasperReport
IText PDF 类库 , 编程非常复杂 ,运维成本非常高
2.IReport 图形化报表开发工具 下载安装
下载网址:
http://community.jaspersoft.com/project/ireport-designer/releases

注意:可能需要jdk1.7才能打开
3.IReport 报表模板简介和设置中文生成
3.1. 新建 JasperReport 模板文件 .jrxml
3.2.设置中文, IReport 引入 ITextAsian.jar 中文包
3.3.了解报表模板结构
Title: 报表标题
PageHeader: 页眉
ColumnHeader: 表格列标题
Detail: 表格数据内容
ColumnFooter: 表格页脚
PageFooter: 页脚
Summary: 摘要
3.4.常用报表组件
StaticText: 静态文本
TextField : 显示动态文本
3.5 设置预览格式为 PDF
4.IReport 配置数据库连接,基于数据表生成报表
4.1.点击按钮配置数据库连接
新建JDBC连接
4.2 在 ireport 添加 oracle 的 jdbc 驱动
4.3 通过 ReportQuery 查询数据库 ,最后点击ok
4.4.设计报表
5.JasperResport 根据模板文件 生成报表
5.1. 设置 ireport 字段 自动换行
5.2将桌面(文件路径)的waybill.jrxml文件复制到项目中
5.3在页面添加按钮,并绑定点击事件,提交表单
5.4在maven项目的父模块添加jasperReport依赖
5.5 在 ReportAction 添加 exportJasperPdf 方法
问题:当项目的功能够多时,可能会出现jar包冲突(当导入本次是jackson包冲突)
Caused by: java.lang.ClassNotFoundException:
com.fasterxml.jackson.annotation.ObjectIdResolver
在pom的坐标中引入
5.6.从数据导入只能显示与数据库匹配,但是如果要想导出我查询后的结果,重新设计ireport报表:
根据java 符合实体类中的对象生成数据源.

重新添加实体类的对象,删除原来的数据

重新在项目加入jrxml文件.


修改 ReportAction 代码
异常:
Caused by: QueryPhaseExecutionException[Result window is too large, from + size must be less than or equal to: [10000] but was [2147483647]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.]
修复 WayBillServiceImpl 查询数据代码:
Action代码
@Action("report_exportJasperPdf")public String exportJasperPdf() throws IOException, DocumentException,JRException, SQLException {// 查询出 满足当前条件 结果数据List wayBills = wayBillService.findWayBills(model);// 下载导出// 设置头信息ServletActionContext.getResponse().setContentType("application/pdf");String filename = "运单数据.pdf";//客户端浏览器String agent = ServletActionContext.getRequest().getHeader("user-agent");filename = FileUtils.encodeDownloadFilename(filename, agent);ServletActionContext.getResponse().setHeader("Content-Disposition","attachment;filename=" + filename);// 根据 jasperReport模板 生成pdf// 读取模板文件String jrxml = ServletActionContext.getServletContext().getRealPath("/WEB-INF/jasper/waybill.jrxml");JasperReport report = JasperCompileManager.compileReport(jrxml);// 设置模板数据// Parameter变量,Map paramerters = new HashMap();paramerters.put("company", "陕西朗朗");// Field变量JasperPrint jasperPrint = JasperFillManager.fillReport(report,paramerters, new JRBeanCollectionDataSource(wayBills));System.out.println(wayBills);// 生成PDF客户端JRPdfExporter exporter = new JRPdfExporter();exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,ServletActionContext.getResponse().getOutputStream());exporter.exportReport();// 导出
ServletActionContext.getResponse().getOutputStream().close();return NONE;} View Code
转载于:https://www.cnblogs.com/wwwzzz/p/8215461.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
