iReport学习笔记
概述
主要介绍如何根据jasper报表和数据生成pdf文档,中文字体问题的解决方案和日期时间的格式化输出。
iReport版本:5.2.0
生成pdf文档
maven依赖
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.2.0</version>
</dependency>
完整的依赖树:
[INFO] +- net.sf.jasperreports:jasperreports:jar:5.2.0:compile
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.8.0:compile[INFO] | +- commons-digester:commons-digester:jar:2.1:compile
[INFO] | +- com.lowagie:itext:jar:2.1.7.js2:compile
[INFO] | | +- bouncycastle:bcmail-jdk14:jar:138:compile
[INFO] | | +- bouncycastle:bcprov-jdk14:jar:138:compile
[INFO] | | \- org.bouncycastle:bctsp-jdk14:jar:1.38:compile
[INFO] | | +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile
[INFO] | | \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile
[INFO] | +- jfree:jcommon:jar:1.0.15:compile
[INFO] | +- jfree:jfreechart:jar:1.0.12:compile
[INFO] | +- xml-apis:xml-apis:jar:1.3.02:compile
[INFO] | +- eclipse:jdtcore:jar:3.1.0:compile
[INFO] | +- org.codehaus.castor:castor:jar:1.2:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.0.5:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.0.5:compile
[INFO] | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.0.5:compile
[INFO] \- sinobest:font-song:jar:1.0:compile
其中,font-song jar是自制的字体jar包,下载地址:http://pan.baidu.com/s/1NzMkm。
基于sql的数据
1. 配置数据源
2. 配置SQL
![]()
每一个结果字段作为一个Field。
3. 在程序中获取文档内容
public void test() throws JRException, IOException, SQLException {
InputStream is = Main.class.getClassLoader().getResourceAsStream("reports/XZFYSQS-query.jasper");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("SQD_SYSID", "4028ca9850d19ccb0150d19cd1ae0000");
Connection conn = ...;
byte[] datas = JasperRunManager.runReportToPdf(is, parameters, conn);
conn.close();
}
基于JavaBean的数据
1. 新建JavaBean
package cn.sinobest.jzpt.fzywgz.reports.pojo;
public class XZFYSQS_RY {
private java.lang.String SQR;
private java.lang.String XB;
private java.sql.Timestamp CSNY;
......
}
2. 在iReport中添加编译路径
3. 在iReport中加入Field
4. 在程序中获取文档内容
public void test() throws JRException, IOException {
InputStream is = Main.class.getClassLoader()
.getResourceAsStream(reports/XZFYSQS-javabean.jasper);
List<XZFYSQS_RY> ryList = new ArrayList<XZFYSQS_RY>();
ryList.add(...);
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(
ryList);
byte[] datas = JasperRunManager.runReportToPdf(is, null, dataSource);
...
}
中文字体解决方案
在编程时根据模板生成pdf内容时,可能出现中文打印不出来的问题;解决方案如下:
- 加入字体jar包:font-song
http://pan.baidu.com/s/1NzMkm - 中文字体,使用宋体、仿宋、方正小标宋简体
- 设置中文组件的属性
simsun.ttf来自于font-song.jar
- 纠正模板名称
我曾以XZFYSQS_RY.jrxml命名,编译之后得XZFYSQS_RY.jasper,打印不出中文以XZFYSQS-RY.jrxml命名,编译之后得XZFYSQS-RY.jasper,可以打印中文
以XZFYSQS_01.jrxml命名,编译之后得XZFYSQS_01.jasper,可以打印中文
日期时间格式化输出
选中TextField - 右键 - Field pattern

对于日期类型,MM则始终显示2位月份,M则根据需要显示1或2位;其他域类推。
iReport学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- http-反向代理学习
主要是学习了反向代理. 结合公司的方向代理使用,然后与同事进行交流,知识还是需要通过交流才能印象深刻,以后多多交流.
- UVA 1645 Count
https://vjudge.net/problem/UVA-1645 题意:有多少个n个节点的有根树,每个深度中所有节点的子节点数相同 dp[i] 节点数为i时的答案 除去根节点还有i-1个点,如果 ...
- vijos 1071 01背包+输出路径
描述 过年的时候,大人们最喜欢的活动,就是打牌了.xiaomengxian不会打牌,只好坐在一边看着. 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了.于是 ...
- 2015/8/29 Python基础(3):数值
数字提供了标量储存和直接访问,是不可更改类型,每次变更数值会产生新的对象.Python支持多种数字类型,包括整型.长整型.布尔型.双精度浮点.十进制浮点和复数.在Python中,变量并不是一个盒子,而 ...
- mybatis在Mapper的xml文件中的转义字符的处理
XML转义字符 < < 小于号 > > 大于号 & & 和 ' ’ 单引号 " " 双引号 用转义字符进行替换 例如 SE ...
- 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.
继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建. https://www.evernote.com/shard/s227 ...
- 暑假集训——cf热身赛部分题有感加其题解
刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作, ...
- TensorFlow中get_variable共享变量调用
import tensorflow as tf with tf.variable_scope('v_scope',reuse=True) as scope1: Weights1 = tf.get_va ...
- Java21个基础知识点
类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: (1) 装载:查找和导入Class文件: (2) 链接:把类的二进制 ...
- SIFT四部曲之——高斯滤波
本文为原创作品,未经本人同意,禁止转载 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 或 ...


