zoukankan      html  css  js  c++  java
  • 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/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    Java Web开发——JSP基本语法杂记
    Java Web开发——HTML CSS JavaScript 杂记
    Leetcode#13 Roman to Integer
    Leetcode#20 Valid Parentheses
    Leetcode#88 Merge Sorted Array
    Leetcode#171 Excel Sheet Column Number
    Leetcode#168 Excel Sheet Column Title
    Leetcode#160 Intersection of Two Linked Lists
    Leetcode#6 ZigZag Conversion
    Leetcode#8 String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/linlf03/p/14880962.html
Copyright © 2011-2022 走看看