JasperReports ——打印PDF(项目工具)
【声明】
- 该文章所用素材来自于网络;
- 该文章仅供学习使用;
- 详细请参考该博主–> strive4free
一、介绍
1.1 JasperReports 原理
??JasperReports是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。一般情况下,JasperReports会结合Jaspersoft Studio(模板设计器)使用导出PDF报表。 [备注:图片来自传智播客]
模块名称 | 解释 |
---|
JRXML | 报表填充模板,本质是一个xml文件 | Jasper | 由JRXML模板编译成的二进制文件,用于代码填充数据 | Jrprint | 当用数据填充完Jasper后生成的对象,用于输出报表 | Exporter | 报表输出的管理类,可以指定要输出的报表为何种格式 | PDF/HTML/XML | 报表形式 |
1.2 开发流程
使用JasperReports导出pdf报表,开发流程如下:
- 制作报表模板
- 模板编译
- 构造数据
- 填充数据
- 输出文件
1.3 模板设计器 Jaspersoft Studio
??Jaspersoft Studio是一个图形化的报表设计工具,可以非常方便的设计出PDF报表模板文件(其实就是一个xml文件),再结合JasperReports使用,就可以渲染出PDF文件。
1.4 设计好模板就可以进行填充数据
1.4.0 添加依赖
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.10.0</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
1.4.1 设计 jrxml 模板文件
[备注:图片来自传智播客] [备注:图片来自传智播客] [备注:图片来自传智播客]
1.4.2 JDBC数据源方式填充数据
将设计好的demo1.jrxml文件复制到当前工程的resources目录下;编写单元测试;
@Test
public void testReport_JDBC() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/kanganhealth","root", "root");
?
String jrxmlPath = "D:\\ideaProjects\\projects111\\jasperreports_test\\src\\main\\resources\\demo1.jrxml";
String jasperPath = "D:\\ideaProjects\\projects111\\jasperreports_test\\src\\main\\resources\\demo1.jasper";
?
JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath);
?
Map paramsMap = new HashMap();
paramters.put("company","demo测试案例");
?
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,paramsMap,connection);
String pdfPath = "D:\\test.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint,pdfPath);
}
输出效果: [备注:图片来自传智播客]
1.4.3 JavaBean数据源方式填充数据
编写单元测试方法输出PDF文件
@Test
public void testReport_JavaBean() throws Exception{
String jrxmlPath = "D:\\ideaProjects\\projects111\\jasperreports_test\\src\\main\\resources\\demo2.jrxml";
String jasperPath = "D:\\ideaProjects\\projects111\\jasperreports_test\\src\\main\\resources\\demo2.jasper";
?
JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath);
?
Map paramters = new HashMap();
paramters.put("company","demo测试公司");
?
List<Map> list = new ArrayList();
Map map1 = new HashMap();
map1.put("tName","入职体检套餐");
map1.put("tCode","RZTJ");
map1.put("tAge","18-60");
map1.put("tPrice","500");
?
Map map2 = new HashMap();
map2.put("tName","阳光爸妈老年健康体检");
map2.put("tCode","YGBM");
map2.put("tAge","55-60");
map2.put("tPrice","500");
list.add(map1);
list.add(map2);
?
JasperPrint jasperPrint = JasperFillManager
.fillReport(jasperPath,paramters,new JRBeanCollectionDataSource(list));
String pdfPath = "D:\\test.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint,pdfPath);
}
测试效果 [备注:图片来自传智播客]
|