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绑定表格动态赋值相关推荐

  1. vue获取table一列数据_VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)...

    一.问题 用elementUi横着增加一行数据没毛病,可以操作 添加一列,这新增的这一列, 第一次去赋值的时候值是改了, 但没生效 点击下一行时 值就变过来 二.原因 横向添加 是复制上面的某一条数据 ...

  2. Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现)

    Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现) 对于ElementUI中使用ECharts在上一篇文章中已经说明具体使用方法 一.效果图:(以每一个月的工业产值为例) 我们 ...

  3. js动态创建表格以及赋值

    1.使用js动态创建表格 (1)不可编辑的表格 function creatTableA() {var tbody = document.querySelector('#tableA');for (v ...

  4. Vue+Element表格动态列+表格分页

    LayUI表格动态列及分页LayUI+JavaScript表格动态列+表格分页 效果如图: 代码: 引用JQuery,Vue,Element等文件,换成自己的路径 <!DOCTYPE html& ...

  5. html表格中添加修改和删除链接,jQuery实现为table表格动态添加或删除tr功能示例...

    本文实例讲述了jQuery实现为table表格动态添加或删除tr功能.分享给大家供大家参考,具体如下: HTML页面元素如下: 订单合同号 捆包号 品名 规格 材质 重量 业务需求是,从后台获取到订单 ...

  6. 利用JasperReport+iReport进行Web报表开发

    用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...

  7. java中插入表格_java 集成 pageoffice 实现在 word 中插入表格并赋值

    Word中的table操作需要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table.因此,要想使用table,则必须在w ...

  8. 使用JasperReport+iReport进行Web报表开发

    使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...

  9. Jasperreport+ireport 实践操作及web应用

    Jasperreport+ireport 实践操作及web应用 学习完jasperreports+ireport,给我感觉深刻,不仅掌握了报表开发技术,还掌握了怎样在web中生成pdf,xls,rtf ...

最新文章

  1. 科大讯飞全新1024:3大计划,200项A.I.能力,全链路驱动应用场景创新!
  2. 博弈论入门之威佐夫博弈
  3. SQLServer数据库如何收缩日志空间?
  4. 程序员的高速学习法——以JS学习为例,进行图解
  5. Ubuntu18.04安装VMware WorkStation
  6. 与容器服务 ACK 发行版的深度对话最终弹:如何通过 open-local 玩转容器本地存储
  7. 例子:倒计时按钮可用
  8. 逗号操作符以及(0,function)()
  9. php框架 css文件引用,yii框架中怎么引入css文件
  10. 如何在Windows Defender中安排扫描
  11. leetcode 49. 字母异位词分组(排序+hash)
  12. 中国微型计算机分省市产量数据统计,2017年6月中国微型计算机设备产量统计数据分析...
  13. NAACL’21 | 来看如何让模型学会因为所以但是如果
  14. 【SpringBoot_ANNOTATIONS】 生命周期 03 @PostConstruct @PreDestroy
  15. 为什么要编写轻量级的View Controller??
  16. OpenGL图形渲染管线(Pipeline)学习
  17. 卷积神经网络的几种模型
  18. 树莓派: oled屏幕字体制作
  19. 浏览器历史记录的模式
  20. 如何写一篇好的职场文档

热门文章

  1. oracle报错oracle not available原因及解决办法
  2. 优化ClickHouse星型模型查询性能
  3. 30岁以上的程序员该何去何从?
  4. Intellij IDEA下载安装配置GIT详细教程 [超详细]
  5. 飞镖 501 分最快完成比赛法(完美比赛方案)(9镖)
  6. Java 微服务框架选型
  7. Comparator接口的使用
  8. 解决vue中BMap未定义问题
  9. 基于Autoware分析op_global_planner全局路径规划模块重规划
  10. 一起校园凶杀案引起的思考