位置: IT常识 - 正文

Jasper Report详细使用教程(保姆级教程),整合Springboot使用(jasperreports入门)

编辑:rootadmin
Jasper Report详细使用教程(保姆级教程),整合Springboot使用 Jasper Report详细使用教程1、下载Jaspersoft Studio2、编写jrxml文件3、编译模板文件4、输出PDF报表(SpringBoot整合)5、解决中文乱码(不显示的问题)6、最后1、下载Jaspersoft Studio

推荐整理分享Jasper Report详细使用教程(保姆级教程),整合Springboot使用(jasperreports入门),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jasperreports详细教程,jasperreports教程,jasper report java,jasperreports详细教程,jasperreport中文文档,jasperreport中文文档,jasperreport中文文档,jasperreports,内容如对您有帮助,希望把文章链接给更多的朋友!

官网下载地址:https://community.jaspersoft.com/project/jaspersoft-studio/releases

2、编写jrxml文件

2.1 新建项目 使用Jaspersoft Studio来创建一个项目,如图所示,新建一个项目,步骤: File -> New -> Project->JasperReportsProject

2.2 新建一个Jasper Report模板 找到你新建的项目。步骤:项目右键 -> New -> Jasper Report,选择 Blank A4 (A4纸大小的模板),然后点击Next并对模板命名。 如图所示,报表模板被垂直的分层,每一个部分都是一个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后面。主要是用来做报表的合计显示。

2.3 通过右边控件画出一个简单的报表模型 红框部分,上面是各种组件窗口,下面是组件的属性设置窗口。

2.3.1 JasperSoft studio常用控件的使用方法

1 、Static Text: 静态文本控件,用于展示静态文本3、Text Field: 动态文本控件,可从数据库,或者是Map集合,或者JavaBean中获取数据,然后填充到此组件中。 语法:$F{value}3、Image: 图片控件,此控件有两个常用值,如下图所示 3、编译模板文件

完成页面布局设计以后,找到自己刚刚设计好的jrxml文件,右击此文件,然后编译此文件 步骤:右击–>JasperReport–>Compile Report。此时会生成一个.jasper文件,将此文件复制到你的项目中。

4、输出PDF报表(SpringBoot整合)4.1 导入依赖 <!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports --> <!--Jasper Report--> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.17.0</version> </dependency> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports-fonts</artifactId> <version>6.17.0</version> <!--<scope>system</scope> <systemPath>${project.basedir}/lib/jasperreports-fonts-6.17.0.jar</systemPath>--> </dependency> <dependency> <groupId>net.sf.barcode4j</groupId> <artifactId>barcode4j</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>net.sourceforge.barbecue</groupId> <artifactId>barbecue</artifactId> <version>1.5-beta1</version> </dependency> <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-bridge</artifactId> <version>1.14</version> </dependency>4.2 将第3步中编译好的.jasper文件复制到resource目录下。目录结构如图所示 4.3 编写测试代码(分别是直接输出到PDF文件,以及输出到网页显示)//以下代码写在上述目录结构中的MainStaterTest测试类中。 @Test public void test2() throws IOException, JRException { //1.读取模板文件 Resource resource = new ClassPathResource("static/test2.jasper"); Map<String,Object> parms = new HashMap<String, Object>(); //3.模板和数据整合 JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(resource.getFile()), parms, new JREmptyDataSource()); //4.导出PDF JasperExportManager.exportReportToPdfStream(jasperPrint,new FileOutputStream("E:\\Users\\c先生\\Desktop\\demo.pdf")); }

上述代码是直接输出PDF文件

package com.lx.comtroller;import com.lx.mapper.UserMapper;import com.lx.pojo.User;import com.lx.service.UserService;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.sql.DataSource;import java.io.FileInputStream;import java.io.IOException;import java.sql.Connection;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author c先生 * @date 2022年09月10日 下午 3:07:34 * @describe */@RestController@RequestMapping("/jasper")public class JasperController { @Autowired DataSource dataSource; @Autowired UserService userService; @Autowired UserMapper userMapper; /** * 展示静态文字 * @param request * @param response */ @RequestMapping("/test") public void test(HttpServletRequest request, HttpServletResponse response){ //引入jasper文件 Resource resource = new ClassPathResource("static/test1.jasper"); try { ServletOutputStream outputStream = response.getOutputStream(); FileInputStream fis = new FileInputStream(resource.getFile()); JasperPrint jasperPrint = JasperFillManager.fillReport(fis, new HashMap<String, Object>(), new JREmptyDataSource()); JasperExportManager.exportReportToPdfStream(jasperPrint,outputStream); } catch (IOException e) { e.printStackTrace(); } catch (JRException e) { e.printStackTrace(); } } /** * 用Map传递参数 * @param request * @param response * @throws Exception */ @RequestMapping("/test2") public void test2(HttpServletRequest request, HttpServletResponse response) throws Exception{ Resource resource = new ClassPathResource("static/test2.jasper"); ServletOutputStream outputStream = response.getOutputStream(); FileInputStream fis = new FileInputStream(resource.getFile()); Map map = new HashMap(); map.put("username","李欣"); map.put("password","666666"); JasperPrint jasperPrint = JasperFillManager.fillReport(fis, map, new JREmptyDataSource()); JasperExportManager.exportReportToPdfStream(jasperPrint,outputStream); } /** * 从数据库中获取全部数据 * @param request * @param response * @throws Exception */ @RequestMapping("/test3") public void test3(HttpServletRequest request, HttpServletResponse response) throws Exception{ Resource resource = new ClassPathResource("static/test3.jasper"); ServletOutputStream outputStream = response.getOutputStream(); FileInputStream fis = new FileInputStream(resource.getFile()); Connection connection = dataSource.getConnection(); JasperPrint jasperPrint = JasperFillManager.fillReport(fis, new HashMap<>(), connection); JasperExportManager.exportReportToPdfStream(jasperPrint,outputStream); } /** * 从数据库中获取指定条件的数据,然后将数据存入List集合,最后展示到页面 * @param request * @param response * @throws Exception */ @RequestMapping("/test4") public void test4(HttpServletRequest request, HttpServletResponse response) throws Exception{ Resource resource = new ClassPathResource("static/test4.jasper"); ServletOutputStream outputStream = response.getOutputStream(); FileInputStream fis = new FileInputStream(resource.getFile()); List<User> userList = userMapper.selectList(null); JRBeanCollectionDataSource source = new JRBeanCollectionDataSource(userList); JasperPrint jasperPrint = JasperFillManager.fillReport(fis, new HashMap<>(), source); JasperExportManager.exportReportToPdfStream(jasperPrint,outputStream); } /** * 同上,加入了页码展示,以及分组报表 * @param request * @param response * @throws Exception */ @RequestMapping("/test5") public void test5(HttpServletRequest request, HttpServletResponse response) throws Exception{ Resource resource = new ClassPathResource("static/test5.jasper"); ServletOutputStream outputStream = response.getOutputStream(); FileInputStream fis = new FileInputStream(resource.getFile()); List<User> userList = userMapper.selectList(null); JRBeanCollectionDataSource source = new JRBeanCollectionDataSource(userList); JasperPrint jasperPrint = JasperFillManager.fillReport(fis, new HashMap<>(), source); JasperExportManager.exportReportToPdfStream(jasperPrint,outputStream); }}

上述代码是输出到网页显示

5、解决中文乱码(不显示的问题)

第一步:配置jasperreports_extension.properties配置文件

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactorynet.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml

第一项为固定配置,第二项配置的值需要与目录对应。目录结构如下图所示

第二步:配置fonts.xml文件

<?xml version="1.0" encoding="UTF-8"?><fontFamilies> <!--<fontFamily name="Lobster Two">--> <!--<normal>lobstertwo/LobsterTwo-Regular.otf</normal>--> <!--<bold>lobstertwo/LobsterTwo-Bold.otf</bold>--> <!--<italic>lobstertwo/LobsterTwo-Italic.otf</italic>--> <!--<boldItalic>lobstertwo/LobsterTwo-BoldItalic.otf</boldItalic>--> <!--<pdfEncoding>Identity-H</pdfEncoding>--> <!--<pdfEmbedded>true</pdfEmbedded>--> <!--<!–--> <!--<exportFonts>--> <!--<export key="net.sf.jasperreports.html">'Lobster Two', 'Times New Roman', Times, serif</export>--> <!--</exportFonts>--> <!--–>--> <!--</fontFamily>--> <fontFamily name="华文宋体"> <normal>stsong/stsong.TTF</normal> <bold>stsong/stsong.TTF</bold> <italic>stsong/stsong.TTF</italic> <boldItalic>stsong/stsong.TTF</boldItalic> <pdfEncoding>Identity-H</pdfEncoding> <pdfEmbedded>true</pdfEmbedded> <exportFonts> <export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export> <export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export> </exportFonts> <!-- <locales> <locale>en_US</locale> <locale>de_DE</locale> </locales> --> </fontFamily></fontFamilies>

注意:其中的标签内的值需要与目录结构中字体文件的名字对应。

字体文件stsong.TTF资源下载地址

6、最后

编写jrxml文件的其他注意事项。

首先要模拟数据源创建数据库连接,按照图片往下操作

Jasper Report详细使用教程(保姆级教程),整合Springboot使用(jasperreports入门)

选择Database JDBC Connection

选择数据库连接驱动 ,输入自己的数据库URL,注意Mysql8.0的URL需要加上端口号以及时区等信息,输入数据库用户名以及密码。 jdbc:mysql://localhost:3306/要连接的数据名字?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false

点击Driver Classpath–>Add,导入数据库连接的Jar包。选择自己本地的jar包 Mysql8.0驱动Jar包下载地址

最后点击Test,如果显示成功,就说明配置成功,如果不成功,请根据报错信息来检查自己配置是否有问题,测试通过以后点击Finish完成数据库连接的配置。

以下操作均在JasperSoft Studio的Outline窗口中完成

细节一、如何展示数据库的数据

1、步骤:项目名右击–>Dataset and Query…

2、选择自己刚刚创建的数据库连接

3、选择要查询的数据库,然后在右侧输入sql语句,点击Read Fields,就可以在下方查询到所有的字段了,然后根据需要删除不需要显示的字段,最后点击OK。

4、在Field中可以看到自己刚刚查询出来的字段,然后将其拖入到模板的合适位置就可以展示了。

在步骤3中,也可以加入条件查询 语法:select * from user where id = $P{p1}。 可以通过Java代码中的Map集合来传入参数,其中Map的Key为 “p1”。

细节二:如何展示分组数据 比如根据员工所在部门展示员工信息,如图所示

1、步骤:项目右击–>Create Group,来创建一个组

2、选择分组依据的字段,然后一路Next

3、将字段拖入到Group Header区域中,此字段需要与上一步所选择的字段一致

细节三:展示页码 直接找到Variables中的PAGE_NUMBER,将其拖到Page Footer的位置即可

本文链接地址:https://www.jiuchutong.com/zhishi/298489.html 转载请保留说明!

上一篇:使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)(springboot用法)

下一篇:激光SLAM框架总结(激光slam入门教程)

  • 微信锁屏不显示消息内容怎么设置(微信锁屏不显示消息内容,解锁后才显示)

    微信锁屏不显示消息内容怎么设置(微信锁屏不显示消息内容,解锁后才显示)

  • ppt怎么添加文字的方框(ppt怎么添加文字阴影)

    ppt怎么添加文字的方框(ppt怎么添加文字阴影)

  • 小米商城优惠券在哪里领(小米商城优惠券怎么用)

    小米商城优惠券在哪里领(小米商城优惠券怎么用)

  • 微信钱包在哪里看(微信钱包在哪里能看到)

    微信钱包在哪里看(微信钱包在哪里能看到)

  • 如何设置电脑休眠时间设置(如何设置电脑休眠唤醒方式)

    如何设置电脑休眠时间设置(如何设置电脑休眠唤醒方式)

  • 抖音该应用未获得微信登录的权限(抖音该应用未获得qq权限怎么办)

    抖音该应用未获得微信登录的权限(抖音该应用未获得qq权限怎么办)

  • 苹果手机打电话屏幕不亮怎么设置(苹果手机打电话就没信号怎么回事)

    苹果手机打电话屏幕不亮怎么设置(苹果手机打电话就没信号怎么回事)

  • 华为手机怎样把几张照片拼在一起(华为手机怎样把时间改为24小时制)

    华为手机怎样把几张照片拼在一起(华为手机怎样把时间改为24小时制)

  • dou上热门支付失败怎么办(抖音上热门支付失败是什么意思)

    dou上热门支付失败怎么办(抖音上热门支付失败是什么意思)

  • 微信群扫码200人以后怎么还可以扫(微信群扫码进群200人数限制)

    微信群扫码200人以后怎么还可以扫(微信群扫码进群200人数限制)

  • 华为nova7有防抖吗(华为nova10像素多少)

    华为nova7有防抖吗(华为nova10像素多少)

  • fla-al10是什么手机(fla-al10是什么手机型号)

    fla-al10是什么手机(fla-al10是什么手机型号)

  • 影视tv怎么下载了进不去

    影视tv怎么下载了进不去

  • win7连上无线网络但不能上网(win7连上无线网不能上网)

    win7连上无线网络但不能上网(win7连上无线网不能上网)

  • soul被拉黑还能恢复吗(soul被拉黑还能看到对方在线)

    soul被拉黑还能恢复吗(soul被拉黑还能看到对方在线)

  • qq注销后是什么样的(qq注销后是什么样子图片)

    qq注销后是什么样的(qq注销后是什么样子图片)

  • OPPOr15怎么没有微信美颜(oppor15怎么没有开发者选项)

    OPPOr15怎么没有微信美颜(oppor15怎么没有开发者选项)

  • 照片显示什么手机拍摄怎么设置(照片上怎么显示是什么手机照的)

    照片显示什么手机拍摄怎么设置(照片上怎么显示是什么手机照的)

  • 微信发语音很慢是什么原因(微信发语音慢是什么原因)

    微信发语音很慢是什么原因(微信发语音慢是什么原因)

  • 苹果11手机显示手机电量在哪(苹果11手机显示iphone不可用怎么办)

    苹果11手机显示手机电量在哪(苹果11手机显示iphone不可用怎么办)

  • 信号源无信号是什么原因(信号源无信号是怎么回事)

    信号源无信号是什么原因(信号源无信号是怎么回事)

  • 英伟达是做什么的(英伟达做什么电脑)

    英伟达是做什么的(英伟达做什么电脑)

  • ps怎么创建新组(ps中怎么创建组)

    ps怎么创建新组(ps中怎么创建组)

  • iphonegps怎么开(iphonegps在哪里打开)

    iphonegps怎么开(iphonegps在哪里打开)

  • 手机限速了怎么办(手机限速了怎么恢复网速)

    手机限速了怎么办(手机限速了怎么恢复网速)

  • 手机不能闪充怎么回事(手机不能闪充怎么回事vivo)

    手机不能闪充怎么回事(手机不能闪充怎么回事vivo)

  • 荣耀9xpro怎么关闭hd(荣耀9x如何取消)

    荣耀9xpro怎么关闭hd(荣耀9x如何取消)

  • 爱奇艺怎么跟别人私聊(爱奇艺怎么跟别人共享会员)

    爱奇艺怎么跟别人私聊(爱奇艺怎么跟别人共享会员)

  • 快手快贝有什么用(快手快贝能干什么)

    快手快贝有什么用(快手快贝能干什么)

  • 苹果相机专业模式在哪(苹果相机专业模式怎么打开)

    苹果相机专业模式在哪(苹果相机专业模式怎么打开)

  • 电脑文件怎么发送到qq(电脑文件怎么发送到qq邮箱)

    电脑文件怎么发送到qq(电脑文件怎么发送到qq邮箱)

  • 出口退税超期未缴税
  • 差额征税的税率怎么计算
  • 私车公用如何避税
  • 2021年白酒新政策
  • 银行预留印鉴是公章还是财务章
  • 外贸出口企业如何申报增值税
  • 企业之间借款利息进项税可以抵扣吗
  • 已付预付款当月应付金额怎么填写?
  • 对公账户汇款方式
  • 网吧电脑折旧率
  • 单用途卡与多用途卡
  • 购买了材料怎么做账
  • 小企业工资薪酬制度
  • 施工安全协议违约怎么办
  • 押金无法退回
  • 公户收到的款都要确定收入吗
  • 提取法定盈余公积比例
  • 建筑企业跨地区
  • 补计提以前年度增值税
  • 保洁劳务税点
  • 补发工资如何申请
  • 2016年红冲发票流程
  • 减免所得税额和抵免所得税额的区别
  • 小额贷款公司借钱容易吗
  • 公司注销有哪些原因
  • 商场 折扣
  • 税控机抵扣网上申报如何做?
  • 个税申报错误怎么更改
  • 公司税务风险怎么解决
  • 关闭同步中心 win10
  • 什么是额定功率和峰值功率
  • 增值税年末结转是结转全年吗
  • 长期贷款利息怎样计算
  • 购买电脑应该怎么做账
  • php加载
  • ubuntu 20.04.1
  • 先付费后收到发票怎么做分录
  • 土地增值税增值额怎么算
  • ntfs文件夹权限高于文件权限
  • 企业的各项费用
  • 项目成本估算的结果一般不包括
  • 购进食用油的会计分录
  • php编译器与集成环境怎么安装
  • less中使用js变量
  • 什么是CHATGPT
  • dpkg deinstall
  • 会计实务中的计提是什么意思
  • 个税的本期收入是什么意思
  • 培训费个人的发票能开吗
  • 社保已经扣款还可以减人员吗
  • 暂估收入时会有哪些凭证
  • 软件销售收入确认时点
  • 付了工资的资产负债表怎么填
  • server更改密码
  • mysql数据库在使用时的常见错误号和解决方法有哪些?
  • 28栏分次预缴税额是手动填写吗?
  • 什么情况需要个人所得税
  • 汽修修理厂
  • 暂估应付账款的科目编码
  • 挂靠被查出来后挂靠费怎么处理?
  • 研发费用范围不包括
  • 选择简易计税方法
  • 未完施工是存货吗
  • 农业生态有限公司成立条件
  • 苗木补偿款
  • 服务器控制电脑
  • mac系统锁屏
  • centos 安装svn
  • win7玩dnf总是未响应
  • NGUI的depth和Z轴的关系
  • LinearLayout layout_weight解析
  • 深入探讨英文
  • python怎么爬
  • js实现拖拽元素改编顺序
  • jquery做菜单
  • python3获取本机ip
  • 交管12123怎么打电话
  • 机票票号怎么查航班
  • 上海2023年个人所得税计算
  • 江苏国税电子税务局网上申报流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设