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入门教程(一):快速入门的更多相关文章

  1. 前端组件化Polymer入门教程(3)——快速入门

    本系列主要翻译官方的教程,因为国内目前这方面的资料太少了,但也不一定和官网的一样,反正就是自己想到哪就写到哪. 如果我没有说明,默认情况下index.html始终包含这段代码,后面将不会再贴上来. & ...

  2. Spring_MVC_教程_快速入门_深入分析

    Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...

  3. Spring Boot 2.x基础教程:快速入门

    简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...

  4. Quartz教程:快速入门

    原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处 ...

  5. EFK教程 - EFK快速入门指南

    通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 作者:"发颠的小狼",欢迎转载与投稿 目录 ▪ 用途 ...

  6. Nginx 极简教程(快速入门)

    作者:dunwu github.com/dunwu/nginx-tutorial 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容聚合 4.  ...

  7. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  8. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  9. [转]ASP.NET MVC 5 学习教程:快速入门

    本教程将使用Visual Studio 2013手把手教你构建一个入门的ASP.NET MVC5 Web应用程序.本教程配套的C#源码工程可通过如下网址下载:C#版本源码链接.同时,请查阅 Build ...

  10. 极简python教程:快速入门好方法

    大家好,我是测试奇谭的作者风风. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的快速教程,他们的痛点同大多数自学编程语言的人一样,遇到了这些问题: 网络上的信息太多,良莠不 ...

随机推荐

  1. SpringBoot 集成多数据源

    一个项目中怎么划分数据库,可以通过具体业务需求. 项目中数据源怎么如何划分,通过注解的方式@Datasource(ref="") 在方法上指定,会连接指定的数据源,这种方式比较繁琐 ...

  2. JSP学习笔记(四)

    Java Servlet servlet的部署.创建与运行 servlet的工作原理 重定向与转发 使用session 1.servlet的部署.创建与运行 [1].创建Servlet 创建一个Ser ...

  3. js中写laravel模板blade语法和PHP逻辑解决方法

    在js中是否能够执行blade的语法?或者说在js中能否处理PHP逻辑呢? 答案是,当然的 下面来看需求:在提交表单,完成入库操作后,使用 return redirect(route('admin.u ...

  4. Java系列之内部类

    今天温习一下 Java 中的内部类,内部类一般有如下几种:静态内部类.成员内部类.匿名内部类和方法内部类,下文中将主要介绍静态内部类和成员内部类,主要内容如下: 概述 静态内部类 成员内部类 匿名内部 ...

  5. [教程]KALI LINUX 2.0 2019 更新国内源

    2019年最新版本KALI 为 KALI 2019.1 下载地址:https://www.kali.org/downloads/ 有的新入门的朋友可能会问,为什么每次都无法手动更新 例如:Update ...

  6. HDU1074:Doing Homework(状压DP)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  7. 使用VirtualBox+Vagrant快速搭建Linux虚拟机环境

    1. 软件准备 下载.安装Virtual Box https://www.virtualbox.org/wiki/Downloads 下载.安装Vagrant https://www.vagrantu ...

  8. 30.6 HashMap的使用

    /* * * 使用HashMap存储数据并遍历(字符串作为key) * *使用HashMap存储数据并遍历(自定义对象作为key) */ 字符串做key和Map的使用一样,重点介绍自定义对象作为key ...

  9. Linux忘记密码解决方案

    Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如 ...

  10. win10+ubuntu双系统修复ubuntu启动引导

    因为windows是不能引导linux的,而每次win10升级或恢复都会将linux的启动引导覆盖掉,导致无法进入linux, 所以一直就禁止了win10更新.这几天win10出了点小毛病,所以就狠下 ...