JasperReport使用

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

效果如下图所示:

  Table组件的使用,

Table 中设置多行显示

设置链接和锚点

柱状图的使用: 参考

 参考: JasperReports入门教程

作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!

原文地址:https://www.cnblogs.com/linlf03/p/14880962.html