JasperReport介绍
JasperReport是一个非常强大,易用的开源报表引擎,用Java语言编写。可以导出各种格式的文档,如HTML,PDF,Execel,Word等)
一、安装Jaspersoft Sutdio
Jaspersoft Sutdio是一个设计报表的模板工具
下载Jaspersoft Sutdio CE 下载地址
二、使用Saspersoft Studio创建模板
1、创建工程New->Project

选择JasperReports Project

命名为ReportFirst
2、创建模板
New-> Jasper Report->

选择Blank A4,点击Next

命名为template1.jrxml
Data Adapter选择One Empty Record,即空数据源。

3、模板设计界面的区域说明

Title: 标题区,如果数据有多页只会在第一页打印
Page Header: 页头区,多页的情况下每页都会打印
Column Header:列头区,配合下面的Detail区打印列表数据,多页的情况下每页都会打印
Detail:可以新增多个Detail区,可以组合打印出多个列表数据,多页的情况下每页都会打印
Column Footer:列表底部区,多页的情况下每页都会打印
Page Footer:页底部区,多页的情况下每页都会打印
Summary:合计区,只会在最后一页打印
4、添加元素
1) 在右侧Basic Elements区域拖拽一个Static Text, 文字为: This is title head。

2) 在左侧Outline区域Parameters上右键-> Creat Parameter.

命名为name, Class为java.lang.String

3)拖拽那么属性到Page Header

4) 在左侧Outline区域Fields右键创建两个字段 name,age

然后将name和age拖拽到Detail区域。

选择预览,name输入zhangsan,效果如下图所示

5、编译模板

生成了template1.jasper文件

三、在Java中使用模板
1)引入依赖
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.12.1</version>
</dependency>
2) 把template1.jasper放入资源文件夹中
3) 编写生成pdf代码
@GetMapping("/testJasper")
public void createPdf(HttpServletRequest request, HttpServletResponse response) throws Exception {
HashMap<String,Object> params = new HashMap<>();
params.put("name","title name");
List<HashMap> list = new ArrayList<>();
for(int i = 0; i < 20; i++){
HashMap<String,String> item = new HashMap<>(2);
item.put("name","zhangsan-" + i);
item.put("age",String.valueOf(i + 10));
list.add(item);
}
String templatePath = "templates/template1.jasper";
JasperReportUtil.exportToPdf(templatePath,params,list, response);
}
exportToPdf方法:
public static void exportToPdf(String jasperPath, Map parameters, List<?> list, HttpServletResponse response) throws Exception {
OutputStream outputStream = response.getOutputStream();
try {
ClassPathResource resource = new ClassPathResource(jasperPath);
response.setContentType(getContentType(ReportType.PDF));
InputStream jasperStream = resource.getInputStream();
JasperPrint jasperPrint = getJasperPrint(jasperStream, parameters, list);
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
} catch (Exception e) {
//log.error("读取报表异常", e);
outputStream.write("读取报表异常".getBytes());
} finally {
outputStream.flush();
outputStream.close();
}
}
http://127.0.0.1:8080/testJasper
效果如下图所示:

柱状图的使用: 参考
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号