Jasperreports+jaspersoft studio学习教程(一)- JasperReports简单示例

本文介绍使用JasperReport技术开发报表的过程,涵盖从下载模板设计器到创建静态文本的步骤。JasperReport是一款强大的报表生成工具,适用于多种Java应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 导言

 

最近项目中运用JasperReport技术开发报表模块。项目快结束了,所以腾出手来,简单记录一下。与大家相互学习,共同提高。

JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。JasperReport是开源的,对于开发者来说是个不错的选择。然而网上关于JsaperRepors的资料比较杂乱。为此我专门买了本书去学习Jasperreports技术,推荐高洪岩老师的 JasperReports+iReport报表开发详解。

 

源码提供:

CSDN下载  

http://download.csdn.net/download/shiyun123zw/10234205

网盘下载

链接:https://pan.baidu.com/s/1AQKUpED4tLo4hLgp5d-bJA  ,提取码:x90i

 

1.2 下载Jaspersoft studio模板设计器

 

1.2.1到JasperReport官网下载 https://community.jaspersoft.com/community-download

 

 

 

下载 Library Jar包和模板设计器Jaspersoft studio。并安装Jaspersoft studio

 

 

 

1.3 打印示例-中文静态文本

 

1.3.1 打开Jaspersoft Studio ,新建一个project, 步骤: File -> New -> Project-> JasperReports Project

 

1.3.2 新建一个Jasper Report模板,在 Stidio的左下方Project Explorer 找到刚才新建的Project (我这里新建的是DemoReport),步骤:项目右键 -> New -> Jasper Report

 

选择 Blank A4 (A4纸大小的模板),然后 Next 命名为DemoReport1.jrxml.

 

1.3.3 点击 Finish ,生成一个报表模板

如图所示,报表模板被垂直的分层,每一个部分都是一个Band,每一个Band的特点不同,在生成报表的时候有些band多次打印,有些band只打印一次。简单介绍一下:

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后面。主要是用来做报表的合计显示。

Studio的outline显示模板结构:

 

 

 

1.3.4 在Studio的右侧组件面板(Palette)找到静态文本组件(Static Text)

把它拖入到 Detail 1 Band中。并写入文字。保存后点击Preview.

 

显示静态文本:

 

 

 

Source可以看到Jrxml文件源码:

 

 

 

 

 

### 如何在Spring Boot中集成和使用JasperReports #### 集成步骤概述 为了在Spring Boot项目中成功集成并使用JasperReports,需要完成几个关键配置。这些配置涉及依赖管理、资源文件设置以及控制器逻辑编写。 --- #### 添加Maven依赖 首先,在`pom.xml`文件中引入必要的依赖项以支持JasperReports的功能[^2]: ```xml <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.17.0</version> <!-- 版本号可以根据实际需求调整 --> </dependency> <!-- 如果需要PDF导出功能,则还需要以下依赖 --> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.27</version> </dependency> ``` --- #### 创建报表模板 创建`.jrxml`文件作为报表设计的基础。可以通过[Jaspersoft Studio](https://community.jaspersoft.com/project/jaspersoft-studio)工具来设计此文件,并将其放置于`src/main/resources/reports/`目录下[^2]。 假设有个名为`exampleReport.jrxml`的文件,其内容定义了简单的表格结构用于显示数据。 编译该`.jrxml`文件为`.jasper`格式以便运行时加载: ```bash mvn jasper:jasp ``` 或者手动通过Jaspersoft Studio进行编译。 --- #### JasperReports扩展属性配置 如果遇到字体缺失或其他渲染问题,可以在项目的`resources`路径下新增个`jasperreports_extension.properties`文件,并按照以下方式填写相关内容[^3]: ```properties net.sf.jasperreports.awt.ignore.missing.font=true net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory net.sf.jasperreports.extension.simple.font.families.dejavu=fonts/fonts.xml ``` 这步有助于解决某些复杂场景下的字体兼容性问题。 --- #### 编写服务层代码 接下来开发Java类处理业务逻辑部分。下面是示例代码片段展示如何动态填充参数到报告中去[^2]: ```java import net.sf.jasperreports.engine.*; import java.util.HashMap; import javax.servlet.http.HttpServletResponse; @Service public class ReportService { public void exportReport(HttpServletResponse response, String reportName, HashMap<String, Object> params) throws Exception { // 加载预编译好的 .jasper 文件 InputStream inputStream = getClass().getResourceAsStream("/reports/" + reportName); JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, params, new JREmptyDataSource()); byte[] data = JasperExportManager.exportReportToPdf(jasperPrint); response.setContentType("application/pdf"); response.setHeader("Content-disposition", "inline; filename=" + reportName.replace(".jasper", ".pdf")); response.getOutputStream().write(data); } } ``` 上述方法接受HTTP响应对象、目标报表名称及其关联参数列表作为输入参数;最终返回已生成完毕的PDF文档流给客户端浏览器下载或在线查看。 --- #### 控制器接口实现 最后构建RESTful API端点供外部调用访问报表生成功能: ```java @RestController @RequestMapping("/api/report") public class ReportController { private final ReportService reportService; @Autowired public ReportController(ReportService reportService){ this.reportService = reportService; } @GetMapping(value="/generate/{reportName}", produces="application/pdf") public void generate(@PathVariable String reportName, HttpServletResponse response)throws Exception{ Map<String,Object> parameters=new HashMap<>(); parameters.put("paramKey","value"); reportService.exportReport(response,reportName+".jasper",parameters); } } ``` 当用户请求特定URL地址时(例如 `/api/report/generate/exampleReport`),服务器会依据指定条件自动生成对应类型的电子档资料回馈至前端界面呈现出来。 --- #### 测试与验证 启动应用后尝试发送GET请求测试API是否正常运作。推荐利用Postman之类的调试工具来进行初步检验工作流程准确性。 ---
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值