这篇文章,主要介绍如何安装JasperStudio报表开发工具以及使用Java填充模板文件内容。

目录

一、安装Jasper Studio工具

1.1、下载报表开发工具

1.2、工具界面介绍

(1)启动工具

(2)创建项目

二、制作Jasper模板文件

2.1、Jasper文件组成区域介绍

2.2、制作模板文件

三、使用Java填充数据

3.1、引入依赖

3.2、创建JasperReportsUtil工具类

3.3、测试控制器类

3.4、放置Jasper模板文件

3.5、运行测试


一、安装Jasper Studio工具

1.1、下载报表开发工具

JasperReport提供了一个专门用于制作报表模板文件的开发工具,叫做:Jasper Studio,官方下载地址是:https://community.jaspersoft.com/community-download,进入下载界面,如下所示:

点击下载按钮,此时会弹出提示框,点击继续就会跳转到下载详情界面:https://community.jaspersoft.com/project/jaspersoft-studio/releases,如下所示:

在下载详情界面中,可以有多种格式的下载文件,例如:exe、zip、tgz等,这里我选择了zip文件,点击下载就可以啦。需要注意的是下载时候,会提示让你注册JasperReports的社区账号,我们用自己邮箱注册一个就可以啦。将下载完成的zip压缩包解压到你的工作目录下,解压之后,会得到一个jaspersoftstudio目录,如下所示:

这个目录下有一个Jaspersoft Studio.exe文件,双击这个文件就可以启动 JasperReports 报表工具啦。

1.2、工具界面介绍

(1)启动工具

双击Jaspersoft Studio.exe文件,启动JasperReports报表工具,如下图所示:

上图就是启动之后的欢迎界面,看着有点像eclipse开发工具对吧!没错,Jasper Studio就是基于Eclipse进行开发的,它可以单独使用,也可以作为Eclipse的插件添加到Eclipse开发工具中使用。

(2)创建项目

左上角选择【File–>New–>Jasper Report】创建一个报表项目,如下所示:

在弹出框中,选择自己需要的模板文件就可以啦,一般来说都是选择A4空白模板,或者是水平方向的A4空白模板,剩下的就是自己设计模板文件啦。

输入项目名称,选择数据源之类的,这里可以省略,直接傻瓜式的点击next就行啦,最后点击Finish即可。

项目创建成功之后,此时就会进入到Jasper Studio的工作区域,Jasper工作区域大致分为下面这几个部分:

到这里,Jasper Studio工具安装好了,并且基本的工作区域也知道了,那就可以开始制作自己的模板文件啦。

二、制作Jasper模板文件

2.1、Jasper文件组成区域介绍

可以看到在Jasper Studio的主报表区域有很多的组成部分,如下图所示:

Jasper将模板文件划分为上面几个组成部分,每一个组成部分表示的含义不同,其中每一个部分的作用如下所示:

  • Title区域:这个区域只会在模板文件的第一页中显示,从第二页开始就不会显示,主要定义文件的标题内容。
  • Page Header区域:这个区域是从第二页开始,每一页都会显示的页头信息,显示在每一页的最顶部。
  • Column Header区域:当我们使用了Table组件的时候,Column Header区域才会生效,它表示的表格的列头,会在每一页显示。
  • Detail区域:这个区域就是真正显示内容的区域,可以有多个Detail区域。
  • Column Footer区域:当我们使用了Table组件的时候,Column Footer区域才会生效,它表示的表格的列尾,会在每一页显示。
  • Page Footer区域:这个区域是从第二页开始,每一页都会显示的页脚信息,显示在每一页的最底部。
  • Summary区域:这个区域是表示合计区域,只会显示在最后一页的末尾区域。

现在不知道这些东西不要紧,后面的文章中,我会通过制作一些模板文件,来演示一下每一个区域的作用。这里就先做一个简单的模板文件,用于演示一下如何通过Java向模板文件中填充数据。

2.2、制作模板文件

首先删除文件中不需要的区域,选择需要删除的元素,右键点击Delete就行啦:

只保留Title和Detail两个区域,删除之后的效果如下所示:

从右侧组件元素栏里面,选择【Text Field】组件,将其拖到Title区域中,如下:

选中刚刚添加的组件,可以编辑它的样式,例如:字体、字体大小、对齐方式等、颜色等属性。在【outline】区域中的【Paramater】,右键创建一个参数,如下所示:

接着在右下角区域的【Properties】中,输入参数名称以及参数对应的Java数据类型,如下:

参数创建完成之后,就可以再次选择我们的之前拖到Title区域的【Text Field】组件,在右下角【Properties】属性区域,设置组件使用的参数值名称。

这里使用的Parameters参数,之后可以通过Java代码直接传递一个Map对象进行数据填充替换,按照这个方式,可以多创建几个测试参数,最终制作的简单模板如下所示:

既然模板文件制作好了,那就可以使用Java语言将需要填充的数据写入到模板文件里面啦。

三、使用Java填充数据

3.1、引入依赖

在实际开发中,一般都是Web工程项目,所以这里是采用SpringBoot工程搭建的一个项目环境,需要引入JasperReports相关的依赖,如下所示:

4.0.0com.gitcode.demojasper-demo1.0.0spring-boot-starter-parentorg.springframework.boot2.3.5.RELEASE88org.springframework.bootspring-boot-starter-webnet.sf.jasperreportsjasperreports6.20.0com.lowagieitextcom.lowagieitext2.1.7org.apache.poipoi-ooxml4.1.2

3.2、创建JasperReportsUtil工具类

为了方便操作Jasper报表,这里在统一的类里面进行报表的处理,代码如下所示:

package com.gitcode.demo.util;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.export.JRXlsExporter;import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;import net.sf.jasperreports.engine.util.JRLoader;import net.sf.jasperreports.export.*;import org.springframework.core.io.ClassPathResource;import java.io.InputStream;import java.util.Map;import java.util.Objects;/** * @version 1.0.0 * @Date: 2023/8/7 14:14 * @Author ZhuYouBin * @Description: JasperReports 工具类 */public class JasperReportsUtil {/** * 使用 JasperReports 生成报表文件 * @param templatePath 模板文件路径及名称 * @param fileName 生成的文件名称 * @param fileType 生成的文件类型,例如: pdf、html、xls 等 * @param parameters 传递到 jrxml 模板文件中的数据参数 * @return 返回生成的报表文件路径 */public static String generateReport(String templatePath, String fileName, String fileType, Map parameters) throws Exception {// 1、获取 jasper 模板文件【采用流的方式读取】ClassPathResource resource = new ClassPathResource(templatePath);InputStream in = resource.getInputStream();JasperReport jasperReport = (JasperReport) JRLoader.loadObject(in);// 2、将 parameters 数据参数填充到模板文件中JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());// 3、按照指定的 fileType 文件类型导出报表文件if (Objects.equals("pdf", fileType)) {JasperExportManager.exportReportToPdfFile(jasperPrint, fileName + ".pdf");} else if (Objects.equals("xls", fileType)) { // 导出 xls 表格JRXlsExporter exporter = new JRXlsExporter();exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); // 设置导出的输入源exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(fileName + ".xls")); // 设置导出的输出源// 配置信息SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();configuration.setOnePagePerSheet(true); // 每一页一个sheet表格exporter.setConfiguration(configuration); // 设置配置对象exporter.exportReport(); // 执行导出} else if (Objects.equals("xlsx", fileType)) {// 导出 xlsx 表格JRXlsxExporter exporter = new JRXlsxExporter();exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); // 设置导出的输入源exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(fileName + ".xlsx")); // 设置导出的输出源SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();configuration.setOnePagePerSheet(true); // 每一页一个sheet表格exporter.setConfiguration(configuration);exporter.exportReport(); // 执行导出} else if (Objects.equals("html", fileType)) {JasperExportManager.exportReportToHtmlFile(jasperPrint, fileName + ".html");}return null;}}

3.3、测试控制器类

编写一个TestController测试控制器,然后在代码中添加需要填充的模板数据,如下:

package com.gitcode.demo.web;import com.gitcode.demo.util.JasperReportsUtil;import net.sf.jasperreports.engine.util.JRResourcesUtil;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.support.ResourcePatternUtils;import org.springframework.util.ResourceUtils;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;/** * @version 1.0.0 * @Date: 2023/8/10 21:13 * @Author ZhuYouBin * @Description: */@RestController@RequestMapping("/api/report")public class TestController {@GetMapping("/export")public String exportFile(String format) throws Exception {ClassPathResource resource = new ClassPathResource("MyFirstReport.jasper");String templatePath = resource.getPath();String fileName = "Jasper导出文件";/* 创建传递到 Jasper 模板文件中的数据参数。 注意:参数的 key 必须和 Jasper Studio 中创建的 Parameters 参数名称相同,否则匹配不上,无法填充数据。 */Map parameters = new HashMap();parameters.put("titleName", "This is a title.");parameters.put("userName", "Tom");parameters.put("sex", "man");parameters.put("age", "20");parameters.put("address", "everywhere.");// 执行导出操作return JasperReportsUtil.generateReport(templatePath, fileName, format, parameters);}}

3.4、放置Jasper模板文件

将之前制作好的Jasper模板文件编译,编译之后会生成一个【.jasper】后缀的文件,这个文件就是我们要的模板文件,要把这个文件放到工程的【src/main/resources】资源目录里面,如下所示:

3.5、运行测试

启动工程,打开浏览器访问http://localhost:8080/api/report/export?format=pdf地址,此时会在工程目录下,生成对应的文件:

打开文件查看内容,如下所示:

到此,Jasper Studio报表工具的安装、制作简单模板以及使用Java填充模板文件数据就介绍完啦。

综上,这篇文章结束了,主要介绍如何安装JasperStudio报表开发工具以及使用Java填充模板文件内容。