JasperReport:报表概述和模板制作

一、报表概述

在企业级应用开发中,报表生成、报表打印下载是其重要的一个环节。除了Excel报表之外,PDF报表也有广泛的应用场景,必须用户详细资料,用户简历等

目前世面上比较流行的制作PDF报表的工具如下:

名称介绍
iText PDFiText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
Openofficeopenoffice是开源软件且能在windows和linux平台下运行,可以灵活的将word或者Excel转化为PDF文档。
Jasper Report是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF

二、JasperReport

2.1 框架介绍

JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDFHTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EEWeb应用程序中生成动态内容。只需要将JasperReport引入工程中即可完成PDF报表的编译、显示、输出等工作。

在开源的JAVA报表工具中,JASPER Report发展是比较好的,比一些商业的报表引擎做得还好,如支持了十字交叉报表、统计报表、图形报表,支持多种报表格式的输出,如PDFRTFXMLCSVXHTMLTEXTDOCXOpenOffice

数据源支持更多,常用 JDBC SQL查询、XML文件、CSV文件 、HQL(Hibernate查询)HBaseJAVA集合等。还允许你义自己的数据源,通过JASPER文件及数据源,JASPER就能生成最终用户想要的文档格式。

2.2 相关文件介绍

  1. JRXML:报表填充模板,本质是一个XML. JasperReport已经封装了一个dtd,只要按照规定的格式写这个xml文件,那么jasperReport就可以将其解析最终生成报表,但是jasperReport所解析的不是我们常见的.xml文件,而是.jrxml文件,其实跟xml是一样的,只是后缀不一样。
  2. Jasper:由JRXML模板编译生成的二进制文件,用于代码填充数据。解析完成后JasperReport就开始编译.jrxml文件,将其编译成.jasper文件,因为JasperReport只可以对.jasper文件进行填充数据和转换,这步操作就跟我们java中将java文件编译成class文件是一样的
  3. Jrprint:当用数据填充完Jasper后生成的文件,用于输出报表。这一步才是JasperReport的核心所在,它会根据你在xml里面写好的查询语句来查询指定是数据库,也可以控制在后台编写查询语句,参数,数据库。在报表填充完后,会再生成一个.jrprint格式的文件(读取jasper文件进行填充,然后生成一个jrprint文件)
  4. Exporter:决定要输出的报表为何种格式,报表输出的管理类。

2.3 开发流程概述

在这里插入图片描述

三、模板工具Jaspersoft Studio

Jaspersoft StudioJasperReports库和JasperReports服务器的基于Eclipse的报告设计器; 它可以作为Eclipse插件或作为独立的应用程序使用。Jaspersoft Studio允许您创建包含图表,图像,子报表,交叉表等的复杂布局。您可以通过JDBCTableModelsJavaBeansXMLHibernate大数据(如Hive)CSVXML / A以及自定义来源等各种来源访问数据,然后将报告发布为PDFRTFXMLXLSCSVHTMLXHTML,文本,DOCXOpenOffice

Jaspersoft Studio 是一个可视化的报表设计工具,使用该软件可以方便地对报表进行可视化的设计,设计结果为格式.jrxmlXML 文件,并且可以把.jrxml文件编译成.jasper格式文件方便JasperReport报表引擎解析、显示。

3.1 Jaspersoft Studio 安装

STSMarketplace搜索Jaspersoft Studio安装即可。
安装Jasper Studio

3.2 面板介绍

左侧切换outline视图,调整视图的位置
jasper面板介绍
主面板介绍:

区域简介
Report editing area(主编辑区域)通过拖动,定位,对齐和通过 Designer palette(设计器调色板)对报表元素调整大小
Editor AreaDesign tab: 当你打开一个报告文件,它允许您以图形方式创建报表选中
Source tab: 包含用于报表的 JRXML 源代码。
Preview tab: 允许在选择数据源和输出格式后,运行报表预览。
Repository Explorer view包含 JasperServer 生成的连接和可用的数据适配器列表
Outline view在大纲视图中显示了一个树的形式的方式报告的完整结构
Properties view控件属性设置
Design tab以图形方式创建报表中的控件

Report Editor Area介绍
在这里插入图片描述

区域简介
Title标题:只在整个报表的第一页的最上端显示。只在第一页显示,其他页面均不显示
Page Header页头:在整个报表中每一页都会显示。在第一页中,出现的位置在 Title Band的下面。在除了第一页的其他页面中Page Header 的内容均在页面的最上端显示。
Page Footer页脚: 在整个报表中每一页都会显示。显示在页面的最下端。一般用来显示页码。
Detail 1详细 : 报表内容,每一页都会显示。
Column Header列头: Detail中打印的是一张表的话,这Column Header就是表中列的列头。
Column Footer列脚 :Detail中打印的是一张表的话,这Column Footer就是表中列的列脚。
Summary统计: 表格的合计段,出现在整个报表的最后一页中,在Detail 1 Band后面。主要是用来做报表的合计显示。

四、第一个 JasperReport 案例

① 引入依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.13.RELEASE</version>
    <relativePath /> 
</parent>

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- Jasper所需jar -->
		<dependency>
			<groupId>net.sf.jasperreports</groupId>
			<artifactId>jasperreports</artifactId>
			<version>6.5.0</version>
		</dependency>
		<dependency>
			<groupId>org.olap4j</groupId>
			<artifactId>olap4j</artifactId>
			<version>1.2.0</version>
		</dependency>
		<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext</artifactId>
			<version>2.1.7</version>
		</dependency>
		<!-- 根据情况添加数据库驱动 -->
</dependencies>

② 引入配置文件

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521/oracle
spring.datasource.username=scott
spring.datasource.password=1234

③ 模板制作

  1. 创建jasper文件:File -> New -> Jasper Report
  2. 删除不需要的band,添加两个Static TextColumn Header,命名为ID用户名用户名这个Static Text需设置为中文字体,否则无法显示,最后设置Border
    在这里插入图片描述
  3. 点击Compile Repot生成Jasper文件
    在这里插入图片描述
  4. 创建测试controller
/**
 * JasperReport的简单使用
 */
@RequestMapping("/test1")
public void createHtml(HttpServletResponse response, HttpServletRequest request) throws Exception {
	Resource resource = new ClassPathResource("templates/demo.jasper");
	FileInputStream is = new FileInputStream(resource.getFile());
	ServletOutputStream os = response.getOutputStream();
	try {
		/**
		 * 创建JasperPrint对象
		 * 数据填充 
		 * is:inputstream params:参数填充 DataSource:数据源填充
		 */
		JasperPrint jasperPrint = JasperFillManager.fillReport(is, new HashMap<>(), new JREmptyDataSource());
		// 写入pdf数据
		JasperExportManager.exportReportToPdfStream(jasperPrint, os);
	} finally {
		os.flush();
		os.close();
	}
}
  1. 访问http://localhost:8080/test1,效果:
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HuCheng1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值