JasperReports入门教程(一):快速入门
JasperReports入门教程(一):快速入门
背景
现在公司的项目需要实现一个可以配置的报表,以便快速的适应客户的需求变化。后来在网上查资料发现可以使用JasperReports + Jaspersoft Studio工具来实现可配置的报表。在使用过程中也积累了一些经验,就想分享出来给大家,作为一个入门的指引,让大家可以更快速的上手。下面大家跟着我一起来实现第一个JasperReports的报表应用。
JasperReports基本介绍
JasperReports是一个非常强大,易用的开源报表引擎,它是用Java编写的。它可以通过各种各样的数据源来生成像素级的文档,这些文档都可以查看,打印以及导出(文档格式包括HTML、PDF、Excel、Word等等)。下面我们先尝试通过一个简单的demo进行上手。
Jaspersoft Studio
Jaspersoft Studio是一个设计报表模板的工具,我们通过它来设计需要使用报表的模板。
1.下载Jaspersoft Studio工具,选择下载Jaspersoft Studio CE 下载地址

2.安装Jaspersoft Studio,安装过程略过,默认安装即可
3.开始我们的第一个报表模板
3.1.打开Jaspersoft Studio工具,点击File->New->Project先创建一个项目

然后填写项目名字为demo,创建一个名叫demo的项目

3.2.点击File->New->Jasper Report(也可以直接在demo项目上右键New->Jasper Report),选择一个竖向A4纸大小的模板

Data Adapter可以选择 One Empty Record 选项,即空数据源,完成后就创建好了第一个模板

4.模板设计界面的区域说明如下。中间的模板设计区域分别多个band,这些band都可以右键删除
- Title:标题区,如果数据有多页只会在第一页打印
 - Page Header:页头区,多页的情况下每页都会打印
 - Column Header:列头区,配合下面的Detail区打印列表数据,多页的情况下每页都会打印
 - Detail:可以新增多个Detail区,可以组合打印出多个列表数据,多页的情况下每页都会打印
 - Column Footer:列表底部区,多页的情况下每页都会打印
 - Page Footer:页底部区,多页的情况下每页都会打印
 - Summary:合计区,只会在最后一页打印
 

5.添加报表元素
5.1.先从右侧Basic Elements区域拖拽一个Static Text元素到Title区,可以任意调整元素的大小和位置,双击可以修改元素要显示的内容,
选中元素后,可以在右侧设置元素的边框,字体和大小,文本的对齐方式等等。

5.2.在左侧Outline区域Paramters上右键Create Paramter创建一个新的属性,命名为name,类型java.lang.String

5.3.拖拽name属性到Page Header区域,同样可以在右侧设置它的属性

5.4.在左侧Outline区域Fields上右键 Create Field创建两个字段Field1,Field2,类型java.lang.String

5.5.然后拖拽Field1,Field2字段到Detail1区域,会自动带出两个值为Field1,Field2的Static Text元素在Column Header区域,调整位置对齐

5.6.预览可以看看样式,因为此时我们未给Field1,Field2的数据集赋值,所以预览的为null

6.编译报表模板
6.1.在左侧的Project Explorer框文件Blank_A4.jrxml上右键Compile Report可以生成编译好的文件Blank_A4.jasper

7.在java中调用模板并输出到pdf/html
上面我们在设计器中设计好了报表的模板,下面我们需要在java中通过代码把数据填充到模板中,并展示出来。
7.1.首先需要在maven中引用jasperreports的jar包依赖
<dependency>
     <groupId>net.sf.jasperreports</groupId>
     <artifactId>jasperreports</artifactId>
    <version>6.9.0</version>
</dependency>
7.2.然后把6.1步骤中编译好的文件Blank_A4.jasper放入资源文件中
7.3.然后调用代码把数据填充到模板中,为了方便后续使用,我把JasperReport常用的方法封装到了JasperReportUtil类中
    @GetMapping("/jasper")
    public void getReport(@RequestParam("type") String reportType, HttpServletResponse response)
            throws Exception {
        HashMap<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("name", "xiao ming");
        List<HashMap> list = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            HashMap<String, String> item = new HashMap<String, String>();
            item.put("Field1",  "Field1-" + i);
            item.put("Field2",  "Field2-" + i);
            list.add(item);
        }
        String jasperPath = JasperReportUtil.getJasperFileDir("chapter1");
        if (reportType.equals("pdf")) {
            JasperReportUtil.exportToPdf(jasperPath, parameters, list, response);
        } else if (reportType.equals("html")) {
            JasperReportUtil.exportToHtml(jasperPath, parameters, list, response);
        }
    }
7.4.把项目运行起来,在浏览器中访问 http://localhost:8080/test/jasper?type=html 或者 http://localhost:8080/test/jasper?type=pdf 就可以在浏览器中看到html或者pdf格式的报表了


JasperReports入门教程(一):快速入门的更多相关文章
- 前端组件化Polymer入门教程(3)——快速入门
		
本系列主要翻译官方的教程,因为国内目前这方面的资料太少了,但也不一定和官网的一样,反正就是自己想到哪就写到哪. 如果我没有说明,默认情况下index.html始终包含这段代码,后面将不会再贴上来. & ...
 - Spring_MVC_教程_快速入门_深入分析
		
Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...
 - Spring Boot 2.x基础教程:快速入门
		
简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...
 - Quartz教程:快速入门
		
原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处 ...
 - EFK教程 - EFK快速入门指南
		
通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 作者:"发颠的小狼",欢迎转载与投稿 目录 ▪ 用途 ...
 - Nginx 极简教程(快速入门)
		
作者:dunwu github.com/dunwu/nginx-tutorial 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容聚合 4. ...
 - MyBatis入门学习教程-MyBatis快速入门
		
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
 - Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
		
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
 - [转]ASP.NET MVC 5 学习教程:快速入门
		
本教程将使用Visual Studio 2013手把手教你构建一个入门的ASP.NET MVC5 Web应用程序.本教程配套的C#源码工程可通过如下网址下载:C#版本源码链接.同时,请查阅 Build ...
 - 极简python教程:快速入门好方法
		
大家好,我是测试奇谭的作者风风. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的快速教程,他们的痛点同大多数自学编程语言的人一样,遇到了这些问题: 网络上的信息太多,良莠不 ...
 
随机推荐
- CI / CD /CD 持续集成 持续交付 持续部署
			
CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...
 - JavaScript 异步、栈、事件循环、任务队列
			
概览 我们经常会听到引擎和runtime,它们的区别是什么呢? 引擎:解释并编译代码,让它变成能交给机器运行的代码(runnable commands). runtime:就是运行环境,它提供一些对外 ...
 - DevOps技能自查表
			
前篇提到了DevOps的工作岗位要求,但是没有来的及深入细节,本文根据个人10年多的经验,尽量详细地列举DevOps所需要用到的一些技术和相关参考网站. Linux基础 Linux系统的基本概念: 必 ...
 - ECMAScript 6,es6 get和set的区别
			
前言:ECMAScript 6是什么 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史.1996 年 11 月,JavaScript ...
 - Git应用详解第二讲:Git删除、修改、撤销操作
			
前言 前情提要:Git应用详解第一讲:Git分区,配置与日志 在第一讲中我们对Git进行了简单的入门介绍,相信聪明的你已经了解Git的基本使用了. 这一讲我们来进一步深入学习Git应用,着重介绍Git ...
 - Scratch2的鸡兔同笼
			
解题思路鸡兔同笼新算法:已知共有鸡和兔15只,共有40只脚,问鸡和兔各有几只.算法:假设鸡和兔训练有素,吹一声哨,它们抬起一只脚,(40-15=25) .再吹一声哨,它们又抬起一只脚,(25-15=1 ...
 - Hadoop(五):HDFS的JAVA API基本操作
			
HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...
 - 微信小程序(黑马优购)完成!!{10天}
			
微信小程序(黑马优购)完成!!{10天} 项目技术点: wxml, json, wxss, js, mina框架 附上视频链接添加链接描述
 - html的嵌套规则
			
html元素分为块状元素和内联元素,块状元素作为其他元素的容器. 块状元素可以嵌套其他块状元素 块状元素可以嵌套内联元素 内联元素不能嵌套块状元素 p内不能嵌套块状元素 有几个特殊块状元素只能包含内联 ...
 - Oracle--pl/sql编程-分支语句(判断、循环)
			
if语句 oracle: elsif java: else if if (条件) then pl/sql或sql语句 [elsif (条件) then ] ...可以有多个elsif [el ...