报表技术之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<WayBill> 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<String, Object> paramerters = new HashMap<String, Object>();
- 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;
- }
报表技术之PDF格式报表生成 ----JasperResport的更多相关文章
- 报表开发导出各种格式文件的API
文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要.报表的输入是指从报表的模板文件(XML格式的)创建WorkBook对象,输出则指将报表保存为各种格式文件,比如Pdf.Excel.Wo ...
- JAVA将Excel中的报表导出为图片格式(一)问题背景
如题所示,先抛出一个问题,如何使用JAVA将Excel中的报表导出为图片格式? 首先说一下这个问题的背景,也就是为什么博主会碰到这个问题 随着微信,易信之流大行其道,企业内部的办公交流.绩效考评甚至考 ...
- 【强大的PDF格式转换工具】Lighten PDF Converter OCR for Mac 6.2.0
[简介] Lighten PDF Converter OCR 是一款Mac上强大的PDF格式转换工具,可以将PDF文档快速批量的转换为Office (Word, Excel, PowerPoint), ...
- 《模式分类(原书第二版)》pdf格式下载电子书免费下载
<模式分类(原书第二版)>pdf格式下载电子书免费下载: https://u253469.ctfile.com/fs/253469-302448505 内容简介 <模式分类>( ...
- html/jsp导出pdf格式的几种方法(jsPDF,iText,wkhtmltopdf)
在许多生成报表的时候需要我们后台作出动态的数据,并渲染到前端生成pdf格式,Excel格式的各种报表,但是浏览器自带的生成pdf功能,windows系统的ctrl+p键就能完全搞定这一需求,但对客户来 ...
- 程序员需要的各种PDF格式电子书【附网盘免费下载资源地址】
程序员需要的各种PDF格式电子书[附网盘免费下载资源地址] 各位,请妥善保存,后期还会有更多更新,如果你有不同的书籍资源或者这里没有你要找的书籍,也可以直接留言,后期我们会继续更新~ Java & ...
- 关于devexpress报表XtraReport,动态修改报表样式(.repx格式),动态添加数据并使用的理解
一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控 ...
- 【HOW】如何限制Reporting Services报表导出功能中格式选项
Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...
- Magento订单打印(pdf格式)
Magento自身包含有:打印发票单,打印装箱单,打印退款单.这些都是基于西方国家的习惯来布置的.公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成.刚接到这个任务时,觉得头大,因为对于PH ...
随机推荐
- TabLayout实现顶部导航栏(1)
TabLayout是android.support.design里的一个控件,使用它可以很方便的做出顶部导航和底部导航.类似于这样的,能设置选中时字体的颜色和选中时的图片. 首先我们在 build.g ...
- 使用urllib和http.cookiejar获取python老男孩学员成绩
打开http://crm.oldboyedu.com/crm/grade/single/ 鼠标右键查看源代码,可以看到我们需要post的name.如下: 这里需要在post试提交token和searc ...
- 常用sql语句整理[MySql]
查看执行计划 explain update test100 set contractSn=99 where contractSn=45; insert ... on duplicate key使用 i ...
- 【ExtJS】关于自定义组件
一.命名规范 在你编码过程中对类,名字空间以及文件名使用统一的命名规则对你代码的组织,结构化以及可读性有很大的好处. 1.类命名规范: 类名最好只包含字母,在多数情况下,数字是不鼓励使用的,除非非要用 ...
- Excel&&word&&PPT
1. Excel 1.1 制作下拉框 选中单元格或列--> 菜单"数据" --> "数据验证"-->"设置" --> ...
- 8086实时时钟实验(一)——《x86汇编语言:从实模式到保护模式》05
1.代码清单 ;代码清单9-1 ;文件名:c09_1.asm ;文件说明:用户程序 ;创建日期:2011-4-16 22:03 ;=================================== ...
- 温故而知新,再探ConcurrentHashMap
这里说的还是1.7的ConcurrentHashMap,在1.8中,ConcurrentHashMap已经不是基于segments实现了. 之前也知道ConcurrentHashMap是通过把锁加载各 ...
- 使用waitfor 语句
aitfor语句用于延迟后面语句的执行,可以指定延迟时间长度是具体的时间.参考下面的语句: waitfor delay ’00:01:15’ print N’到时间了’ --也可以不加N 字符串 ...
- sp_addlinkedserver创建远程服务器查询
远程服务器查询可以分两步完成: 1.建立连接服务器 exec sp_addlinkedserver @server='Test_Server', --被访问的服务器别名 @srvproduct='', ...
- hdu 1394 逆序数(线段树)
http://acm.hust.edu.cn/vjudge/problem/15764 http://blog.csdn.net/libin56842/article/details/8531117 ...