使用Jasper Reports以Java创建报告

上周,我试图使用Jasper创建报告。 在这篇文章中,我将记录一些资源和链接,以便对任何寻求类似信息的人都有用。

我将介绍Jasper报告,示例和Dynamic Jasper的生命周期。

Jasper Reports是世界上最受欢迎的开源报告引擎。 它完全用Java编写,并且能够使用来自任何类型的数据源的数据,并生成像素完美的文档,这些文档可以查看,打印或导出为各种文档格式,包括HTML,PDF,Excel,OpenOffice和Word 。

JasperReport生命周期

图片来自Jasper Library Wiki

如图所示,生命周期包含3个不同的阶段,

1.设计报告

在此步骤中,将涉及创建JRXML文件,该文件是一个XML文档,其中包含报告布局的定义。 我们可以使用iReport Designer或文本编辑器手动创建它。 使用iReport Designer,布局是完全以可视方式设计的,因此您可以忽略JRXML文件的实际结构。

这是有关使用iReport设计报告的详细教程。 我们还可以使用本文后面介绍的Dynamic Jasper设计报告。

2.执行报告。

在执行报告之前,必须将JRXML编译在称为Jasper文件(* .jasper)的二进制对象中。 出于性能原因完成此编译。 Jasper文件是您需要随应用程序一起提供的文件,以便运行报告。 编译报表后,将使用应用程序中的数据填充报表。 net.sf.jasperreports.engine.JasperFillManager类提供了必要的功能来填充报告中的数据。

通过将Jasper文件和数据源传递给JasperReports来执行报告执行。 数据源类型很多,可以从SQL查询,XML文件,csv文件,HQL(休眠查询语言)查询,Java Bean集合等填充Jasper文件。为了找到合适的数据源,JasperReports非常灵活,可以让您编写自己的自定义数据源。

JasperFillManager.fillReportToFile('MasterReport.jasper',参数,getDataSource());

此操作将创建一个Jasper打印文件(* .jrprint),该文件用于打印或导出报告。

3.导出为所需格式

使用上一步中创建的Jasper打印文件,我们将能够使用JasperExportManager将其导出为任何格式。 贾斯珀提供各种形式的出口。 这意味着使用相同的输入,我们可以创建数据的多种表示形式。 Jasper内部使用不同的API创建文档。 但是这些复杂性被更简单的隐藏了
JasperExportManager。

JasperExportManager。 exportReportToPdfFile('MasterReport.jrprint');

简而言之,生命周期可以总结在下图中

图片来自Ramki Tech

关于Jasper Reports生命周期的参考资料和其他优秀文章

  1. 贾斯珀图书馆Wiki
  2. 碧玉报告维基
  3. Ramki Java博客中的Jasper报告
  4. JasperReport –开源Java报告框架


例子

我发现很难找到Jasper报告的可行示例。 但是它就在包装内! 下载Jasper Library后,转到demo \ samples,您将找到许多示例程序。 其中许多需要有效的HSQL DB连接,要激活它,请转到demo \ hsqldb并启动服务器。 每个文件夹都有一个readme.txt文件,它将帮助您了解如何运行它。 可以使用ant任务执行所有示例

这是其他一些来源的清单。

  1. Jasper库中的样本
  2. Java报告与Jasper报告–第2部分
  3. 碧玉报告-示例
  4. Spring MVC 3.1和JasperReports


使用Dynamic Jasper简化报表创建

DynamicJasper (DJ)是一个免费的开源库,它隐藏了Jasper Reports的复杂性,它可以帮助开发人员在设计简单/中等复杂性报告时节省时间,从而自动生成报告元素的布局。

项目主页提供了许多有关如何使用该库的示例和代码片段。 我已经使用了一段时间,它是JRXML文件的非常稳定的替代品。虽然使用动态jasper,但是报表设计是用Java编码的。 这意味着每次编译,填充和导出报告。 通过使用动态碧玉,我们将替代上述碧玉生命周期中的第一步。 即使使用动态jasper,您也需要jasper库和其他相关文件。

这是Dynamic Jasper使用的更多示例。

  1. 如何在Dynamic Jasper上浏览页面
  2. Spring 3 – DynamicJasper – Hibernate教程:连接DynamicReport
  3. Spring 3 – DynamicJasper – Hibernate教程:使用普通列表


参考: 在我们的面向对象的生活博客中,使用我们的JCG合作伙伴 Manu PK 使用Jasper Reports在Java中创建报告 。

翻译自: https://www.javacodegeeks.com/2012/11/using-jasper-reports-to-create-reports-in-java.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7 安装NodeJS

一、切换目录到/usr/local/src 命令行:cd /usr/local/src 二、下载node.js(我这里下载的是二进制的源码) 命令行: wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz 图片: 三、解压压缩包 命令行&am…

CSS3基础2(变形与动画)

<!DOCTYPE html5><html lang"en"><head> <meta charset"UTF-8"> <title>CSS3基础知识&#xff08;动画&#xff09;</title> <style> /*div{*/ /*width: 150px;*/ /*hei…

java对hashmap迭代_Java:通过HashMap迭代,这样更有效率?

第二个选项肯定更有效&#xff0c;因为在第一个选项中只进行一次查找&#xff0c;次数为n次。但是&#xff0c;没有什么比尝试它更好&#xff0c;当你可以。所以这里 –(不完美&#xff0c;但足够好验证假设和我的机器)public static void main(String args[]) {Map map new H…

html-edm(邮件营销)编写规则

最近写了一个edm邮件 以前没有接触过 使用的是很老的html页面编写规则 只能用table标签 在此记录一下edm编写的一些规则 个人参考的是这两个网址&#xff0c;转载一下 http://www.zcool.com.cn/article/ZMTM5MDgw.html https://www.cnblogs.com/lhweb15/p/6404626.html …

ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试

1.新建.NET Core web项目 2.Controllers-Models-Views 分三个大部分 3.下载安装最新sdk 官方的SDK以及Demo都还是.NET Framework的&#xff0c;根据官方文档说明新建网站后还是需要引用官方SDK的源码&#xff0c; 在这里直接使用网上一位朋友的用.NET Standard 2.0 进行实现了支…

如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章。如需学习视频&#xff0c;请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本教程主要介绍如何使用who命令检查用户登录信息。如何使用who命令检查用户登录信息Linux中的who命令列出了系统上的所有登录用户…

研究僵局–第4部分:修复代码

在这个简短的博客系列的最后BadTransferOperation中&#xff0c;我一直在讨论分析死锁&#xff0c;我将修复BadTransferOperation代码。 如果您看过本系列的其他博客 &#xff0c;那么您将知道&#xff0c;为了达到这一点&#xff0c;我创建了死锁的演示代码&#xff0c;展示了…

chrome插件2

转自&#xff1a;http://www.codeceo.com/article/15-chrome-extension.html 1. Web Developer 支持Chrome的Web Developer扩展&#xff0c;允许你通过添加一个小工具栏来使用不同的工具。 官方网站&#xff1a;https://chrome.google.com/webstore/detail/web-developer/bfbam…

java月历组件_vue之手把手教你写日历组件

---恢复内容开始---1.日历组件1.分析功能&#xff1a;日历基本功能&#xff0c;点击事件改变日期&#xff0c;样式的改变1.结构分析&#xff1a;html1.分为上下两个部分2.上面分为左按钮&#xff0c;中间内容展示&#xff0c;右按钮下面分为周几展示和日期展示3.基本结构页面ht…

HTML5和css3

超链接 <a target"页面打开位置" href"链接地址">内容</a>target:_blank 重新打开一个页面target:_self 当前页面打开 1.页面地址&#xff1a; 基础功能&#xff0c;用于进入该链接的页面&#xff1b; 2.锚点&#xff1a; 需要给标签名定义id…

python下载显示文件丢失_Microsoft.PythonTools.resources.dll

我该如何安装从金山毒霸下载的DLL文件&#xff1f;一&#xff1a;1、从金山毒霸下载压缩文件。2、将DLL文件解压到电脑上的某个地方。3、把该文件跟要求使用它的程序放在同一路径上。注意32位程序需要使用32位的DLL文件&#xff0c;64位程序需要使用64位的DLL文件。否则会出现0…

maven project module 依赖项目创建 ---转

一、创建Maven Project 1.右击 --> New --> Other&#xff0c;--> Maven --> Maven Project --> Next 2.如下图&#xff0c;选中Create a simple project --> Next 3.输入Group Id, Artifact Id, Version, Packaging选择pom&#xff0c;因为创建的Maven Pr…

java soot_正确执行3个地址代码的SOOT API

我在运行SOOT API时遇到问题 . 我正在使用java -cp soot-2.5.0.jar soot.Main -f jimple test我遇到以下错误&#xff1a;Exception in thread "main" java.lang.RuntimeException: Could not load classfile: java.io.ObjectInputStream atat soot.coffi.Util.resol…

JSF AJAX请求的会话超时处理

JSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时&#xff0c;在处理Ajax请求超时场景时可能会遇到问题。 例如&#xff0c;如果您使用的是基于J2EE表单的身份验证&#xff0c;则会话超时后应将正常请求重定向到登录页面。 但是&#xff0c;如果您的请求是AJAX…

linux常见命令搜集

查找根目录下txt和pdf文件 find / \( -name "*.txt" -o -name "*.pdf" \) -print 正则查找根目录下所有的txt和pdf文件 find / -regex ".*\(\.txt|\.pdf\)$"查找所有非txt文本 find . ! -name "*.txt" -print制定搜索深度 find ~ -max…

前端html,css基础总结

0.1、css引入界面的方式: 内联式:通过标签的style属性&#xff0c;在标签上直接写样式。 <div style"width:100px; height:100px; background:red "></div> 嵌入式:通过style标签&#xff0c;在网页上创建嵌入的样式表。 <style type"text/css&q…

知乎python练手的_Python—爬虫之初级实战项目:爬取知乎任一作者的文章练手

爬虫之初级实战项目&#xff1a;爬取知乎任一作者的文章练手在正式上代码之前&#xff0c;先过一遍之前所学知识的框架内容&#xff0c;温故而知新&#xff01;&#xff01;&#xff01;接下来我们直接上代码&#xff0c;一定要手敲代码、手敲代码、手敲代码&#xff01;&#…

java url帮助类_Spring居然还提供了这么好用的URL工具类

1. 前言开发中我们经常会操作 URL&#xff0c;比如提取端口、提取路径以及最常用的提取参数等等。很多时候需要借助于一些第三方类库或者自己编写工具类来实现&#xff0c;今天胖哥给大家介绍一种方法&#xff0c;无需新的类库引入&#xff0c;只要你使用了 Spring Web 模块都可…

Java并发之CyclicBarria的使用(二)

Java并发之CyclicBarria的使用&#xff08;二&#xff09; 一.简介 之前借助于其他大神写过一篇关于CyclicBarria用法的博文&#xff0c;但是内心总是感觉丝丝的愧疚&#xff0c;因为笔者喜欢原创&#xff0c;而不喜欢去转载一些其他的文章&#xff0c;为此笔者自己原创了一个C…

需加装饰——装饰模式

装饰模式指的是在不必改变原类文件和使用继承的情况下&#xff0c;动态地扩展一个对象的功能。它是通过创建一个包装对象&#xff0c;也就是装饰来包裹真实的对象。 类图分析 我们先假设一个业务场景&#xff0c;有三种房子需要装修&#xff0c;分别是公寓&#xff0c;木屋和别…