JasperReport、iReport以及JavaBean绑定表格动态赋值
1、 Jasper简介
Jasper是一款比较优秀并且开源的报表设计软件,完全采用java语言开发,支持多种数据源,而且能够设计比较强大的报表,该报表面向的对象更多的是针对开发人员而不是用户。
2、Jasper的使用
因为在项目中需要用到报表设计,报表设计有多种选择,因为此次报表设计表较复杂,最终确定选用了Jasper。
本次主要介绍的功能有:
(1)、报表设计器界面中各部分的作用。
(2)、设计报表
(3)、表格绑定JavaBean数据源。
(4)、显示乱码问题。
(5)、代码中对表格进行动态赋值。
2.1、报表设计器界面中各部分的作用
2.1.1、新建项目
2.1.2、新建报表
右击项目名称,新建报表,给报表取名字,然后一路next。
会生成如下页面:
其中各模块(Band)的作用:
tital(标题):只会显示在第一页。
Page Header(页头):显示在每页顶部位置。
column Header(行头):显示在每页的顶部但是低于Page Header。
Detail(主要内容):这里是展示我们详细的内容,也是在所有Band中唯一一个可也按需增加的Band模块。
Column Footer(行尾):显示在每页底部,但是会高于page footer。
Page Footer(页尾):显示在每页页尾。
Summary(总结):显示在最后一个Detail之后并在Column Footer之前。
2.2、设计报表
这是本次设计的最终样式:
效果图:
注:上图表示两页pdf,为了方便展示,截图拼接。
2.2.1、设计页说明
1、公司编号及公司名称是两个static Text,这个主要是用来设置静态文本。
2、在Fields出右键点击Create Field,创建两个field,然后将其拖至图上位置。
注:此处的parameter_2是在第二个Detail里面(Detail2),新增detail2的方法是在第一个detail处右键,点击Add Detail Band。
3、新增一个Table组件
双击Detail1中的表格,然后进入如下页面:
根据上图的文字说明,将表格修改完成。
2.3、表格绑定JavaBean数据源(重要)
这里有一点问题,因为对数据库数据源或者Json数据源,设计器都能够支持,但是对于javaBean,设计器支持不是很好,这时候我们需要自己手动给表格绑定数据源。具体操作如下:
(1)在我们报表下的Fields下创建一个Field,这个是用来在代码中传递我们表格参数的载体字段。我这里名字叫做tableList。该字段的数据类型必须是 net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
(2)双击Detail1中的表格,在Parameter中创建table1。该字段的数据类型必须是 net.sf.jasperreports.engine.JRDataSource
(3)手动绑定javaBean数据源(重要)
查看报表源代码,之后找到 jr:table标签,然后找到datasetRun标签在该标签内手动增加下面代码:
<datasetParameter name="table1"><datasetParameterExpression><![CDATA[$F{tableList}]]></datasetParameterExpression>
</datasetParameter>
<dataSourceExpression><![CDATA[$F{tableList}]]></dataSourceExpression>
这里的table1、tableList就是之前设置的。
至此,报表设计完成。
2.4、解决乱码问题
在我们导出的时候,中文可能会看不见,这个是因为在报表设计器中内置的字体,在导出pdf的时候,用不到,甚至我们在代码中生成的pdf,也会因为字体不存在导致生成的pdf看不见中文。
2.4.1、字体查找
在我们的windows中,有很多字体,存在于 C:\Windows\Fonts这个路径下,我们找到我们想要使用的字体(一种或多种字体),单必须保证这些字体都是 .ttf结尾的。.ttc文件我们可也转化为.ttf文件。具体百度一下。
2.4.2、将字体导入报表设计器中
点击Add后做如下操作:
点击Finish后,我们在报表设计器中导出的pdf文件就不会乱码了,如果我们需要修改代码里面中文不显示问题,我们可也在如下页面导出字体jar包
导出后在项目中引用该jar包即可。
2.5、代码中对表格进行动态赋值
代码动态赋值请访问github:GitHub - liangyongpeng/jasper-report-test: JasperReport代码动态替换属性值
注意点:
(1)代码中需要引入的依赖:
<dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>6.16.0</version><exclusions><exclusion><groupId>com.lowagie</groupId><artifactId>itext</artifactId></exclusion></exclusions></dependency>
(2)参数类型:
3、文档
如需要文档(英文版,包含操官方用户手册和API接口文档),请私信!!!
JasperReport、iReport以及JavaBean绑定表格动态赋值相关推荐
- vue获取table一列数据_VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)...
一.问题 用elementUi横着增加一行数据没毛病,可以操作 添加一列,这新增的这一列, 第一次去赋值的时候值是改了, 但没生效 点击下一行时 值就变过来 二.原因 横向添加 是复制上面的某一条数据 ...
- Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现)
Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现) 对于ElementUI中使用ECharts在上一篇文章中已经说明具体使用方法 一.效果图:(以每一个月的工业产值为例) 我们 ...
- js动态创建表格以及赋值
1.使用js动态创建表格 (1)不可编辑的表格 function creatTableA() {var tbody = document.querySelector('#tableA');for (v ...
- Vue+Element表格动态列+表格分页
LayUI表格动态列及分页LayUI+JavaScript表格动态列+表格分页 效果如图: 代码: 引用JQuery,Vue,Element等文件,换成自己的路径 <!DOCTYPE html& ...
- html表格中添加修改和删除链接,jQuery实现为table表格动态添加或删除tr功能示例...
本文实例讲述了jQuery实现为table表格动态添加或删除tr功能.分享给大家供大家参考,具体如下: HTML页面元素如下: 订单合同号 捆包号 品名 规格 材质 重量 业务需求是,从后台获取到订单 ...
- 利用JasperReport+iReport进行Web报表开发
用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...
- java中插入表格_java 集成 pageoffice 实现在 word 中插入表格并赋值
Word中的table操作需要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table.因此,要想使用table,则必须在w ...
- 使用JasperReport+iReport进行Web报表开发
使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...
- Jasperreport+ireport 实践操作及web应用
Jasperreport+ireport 实践操作及web应用 学习完jasperreports+ireport,给我感觉深刻,不仅掌握了报表开发技术,还掌握了怎样在web中生成pdf,xls,rtf ...
最新文章
- 科大讯飞全新1024:3大计划,200项A.I.能力,全链路驱动应用场景创新!
- 博弈论入门之威佐夫博弈
- SQLServer数据库如何收缩日志空间?
- 程序员的高速学习法——以JS学习为例,进行图解
- Ubuntu18.04安装VMware WorkStation
- 与容器服务 ACK 发行版的深度对话最终弹:如何通过 open-local 玩转容器本地存储
- 例子:倒计时按钮可用
- 逗号操作符以及(0,function)()
- php框架 css文件引用,yii框架中怎么引入css文件
- 如何在Windows Defender中安排扫描
- leetcode 49. 字母异位词分组(排序+hash)
- 中国微型计算机分省市产量数据统计,2017年6月中国微型计算机设备产量统计数据分析...
- NAACL’21 | 来看如何让模型学会因为所以但是如果
- 【SpringBoot_ANNOTATIONS】 生命周期 03 @PostConstruct @PreDestroy
- 为什么要编写轻量级的View Controller??
- OpenGL图形渲染管线(Pipeline)学习
- 卷积神经网络的几种模型
- 树莓派: oled屏幕字体制作
- 浏览器历史记录的模式
- 如何写一篇好的职场文档