报表技术之PDF格式报表生成

您所在的位置:网站首页 Oracle生成图形化报表 报表技术之PDF格式报表生成

报表技术之PDF格式报表生成

2024-07-07 08:11| 来源: 网络整理| 查看: 265

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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3