编程语言
首页 > 编程语言> > JasperReport使用

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

效果如下图所示:

 

 参考: JasperReports入门教程

标签:outputStream,name,打印,list,JasperReport,使用,多页,模板
来源: https://www.cnblogs.com/linlf03/p/14880962.html