JasperReport使用心得
1. JasperReport 报表文件视图化生成工具iReport。
iReport做为一个生成JasperReport的视图工具,和我们是使用的大多数报表创建工具没有太大的差别,都是拖控件,搭出报表的样子,和水晶报表差不多。但是iReport有一个不同的地方,它的存储文件是是一个.jrxml的文件,是一个纯xml文件,编译后会产生一个.jasper的文件,这两个文件,在构建报表的时候都是需要的。
note:
1. 拖完页面,编译一下,可以发现新建的文件中的一些错误,例如 页面中使用的值是否在dataSource的Fields中定义。
2. JasperReport 中有一个非常简单的dataSource:net.sf.jasperreports.engine.data.JRBeanCollectionDataSource可以使用。
它有一个构造方法,可以传入一个集合来产生这个dataSource。
例如:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{collectionList}) 就是建立一个以collectionList作为数据的数据源。在report中我们就可以使用$F{Field}(是collectionList<Bean> Bean中的属性)来得到List中每个Bean的数据了。
2.JasperReport 生成report
// 编译.jrxml文件
JasperCompileManager.compileReportToFile("testJasperReport.jrxml"), context.getRealPath("testJasperReport.jasper"));
// 加载jasper
File reportFile = new File("testJasperReport.jasper");
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
// 填充Report parameters 是一个Map,new net.sf.jasperreports.engine.JREmptyDataSource()表示我们不需要传入是个空DataSource
// 将数据和xml组合,生成需要的打印文件
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new net.sf.jasperreports.engine.JREmptyDataSource());
// 将jasperPrint输出到html页面上
JRHtmlExporter exporter = new JRHtmlExporter();
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image?image=");
// 设置分页
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "<br style='page-break-before:always;'>");
System.out.println("jasperreports html print stop");
exporter.exportReport();
附:
ireport在服务器中发布出现问题及其解决方案
1. 报表打印文件(.jasper)无法生成,有找不对象错误,造成原因为文件系统空间不足。
分析后,发现由于报表打印文件生成时,会创建一些字体,这些字体会创建在/tmp文件目录下(linux),如果在服务器中,此处空间不足,字体无法创建,报表将不能生成。
解决办法为,删除tmp中的文件,重启服务。
JasperReport使用心得的更多相关文章
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- NoSql数据库使用半年后在设计上面的一些心得
NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
随机推荐
- Apache虚拟主机的配置
虚拟主机的配置 基于IP地址的虚拟主机配置Listen 80DocumentRoot /www/example1ServerName www.example1.comDocumentRoot /www ...
- Python 一路走来 DOM & Jquery
DOM 查找: 直接查找 间接查找 —getElementById ...
- frame嵌套的学习
iframe嵌套的学习 具体代码<br /> window.onload=function(){<br /> var voteid=window.parent.parent.d ...
- centos6.6安装mysql5.7.6(采用MySQL Yum Repository)—(先看最后一行)
在centos6.6系统上采用MySQL Yum Repository安装mysql5.7.6: 帮助文档:http://dev.mysql.com/doc/refman/5.7/en/linux-i ...
- Keil伪指令
Keil伪指令 目录 Keil伪指令... 1. ALTNAME. 2 2. BIT. 2 3. BSEG.. 2 4. CODE. 2 5. CSEG.. 2 ...
- windows下查看端口占用情况
最近在用ICE做分布式应用 https://doc.zeroc.com/pages/viewpage.action?pageId=5048454 写了一个client 和server.server监听 ...
- Android SQLite简介
SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使 ...
- 动态规划——min/max的单调性优化总结
一般形式: $max\{min(ax+by+c,dF(x)+eG(y)+f)\},其中F(x)和G(y)是单调函数.$ 或 $min\{max(ax+by+c,dF(x)+eG(y)+f)\},其中F ...
- 齐B小短裙
女模周蕊微博引关注 火了齐B小短裙毁了干爹[图]_网易新闻中心 齐B小短裙
- socket 发送Ping包
参考链接: http://blog.csdn.net/zpxili/article/details/11542041 http://blog.csdn.net/cbuttonst/article/de ...