ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JasperReport使用

2021-06-13 21:04:59  阅读:290  来源: 互联网

标签:outputStream name 打印 list 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有