【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)

这篇具有很好参考价值的文章主要介绍了【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章,主要介绍JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)。

目录

一、基础组件元素

1.1、StaticText

1.2、TextField

1.3、Image

1.4、Break分页

1.5、Rectangle矩形区域

1.6、Ellipse椭圆区域

1.7、Line斜线

1.8、Generic组件(TODO)

1.9、Frame组件(TODO)

1.10、Subreport组件

1.11、Barcode条码组件

1.12、List列表组件

1.13、Chart图表(TODO)

1.14、Crosstab组件(TODO)

1.15、Table表格组件

1.16、Map组件(TODO)

1.17、SpiderChart组件(TODO)

二、复合元素

2.1、PageNumber

2.2、TotalPages

2.3、CurrentDate

2.4、Time


一、基础组件元素

1.1、StaticText

StaticText是Jasper中的一个基础组件,用于表示静态文本内容,它表示的内容在程序运行过程中是不可以改变的,在制作模板文件的时候,就已经固定了文本内容。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.2、TextField

TextField是一个基础组件,它表示的是一个文本域,可以设置一个表达式对象,例如:Parameters、Fields等,也就是说,TextField文本域组件可以在程序运行过程中,动态的显示文本内容。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.3、Image

Image是一个图片组件,可以添加多种来源的图片,有下面几种来源:

  • 工作空间中的资源:在工作空间中的元素。
  • 文件系统中的绝对路径:只是快速测试,实际报表中不会使用。
  • URL资源:一个远程的图片URL地址。
  • 从Jasper服务器中选择的图片。
  • 自定义表达式:使用表达式。
  • 没有图片,只是创建一个图片元素,之后在修改表达式。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

显示图片的Base64字符串:

在Java中可以将图片转换成字节输入流,然后将其传入到Jasper模板文件里面。制作图片模板文件,创建一个名称叫做【imageBase64】的Parameters参数,接着添加一个Image组件,设置它的表达式为字节输入流,如下所示:

new ByteArrayInputStream(org.apache.commons.codec.binary.Base64.decodeBase64($P{imageBase64}.getBytes()))

模板文件设置:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

制作的图片模板文件如下所示:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

在Java代码中将图片转换成Base64字符串存入到Parameters参数里面。

package com.gitcode.demo.web;

import com.gitcode.demo.util.JasperReportsUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sun.misc.BASE64Encoder;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2023/8/28 21:47
 * @Author ZhuYouBin
 * @Description: 图片组件
 */
@RestController
@RequestMapping("/api/report")
public class ImageController {

    @GetMapping("/image")
    public String imageDemo() throws Exception {
        ClassPathResource resource = new ClassPathResource("jasper/ImageDemo.jasper");
        String templatePath = resource.getPath();
        String fileName = "图片模板文件";
        // 设置 parameters 参数
        Map<String, Object> parameters = new HashMap<>();
        // TODO 读取图片
        ClassPathResource imageResource = new ClassPathResource("image/demo.jpg");
        InputStream is = imageResource.getInputStream();
        byte[] data = null;
        try {
            data = new byte[is.available()];
            is.read(data);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        String base64 = encoder.encode(data);
        parameters.put("imageBase64", base64);
        // 执行导出操作
        return JasperReportsUtil.generateReport(templatePath, fileName, "pdf", parameters);
    }
}

运行结果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

JasperReport中图片的大小固定之后,填充的图片宽度、高度会自动缩放来适应模板文件中图片的宽度和高度。

1.4、Break分页

Break是一个分页组件,它必须放在Detail区域里面,它的作用就是让内容分成两页显示,如下所示:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

预览的效果如下所示:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.5、Rectangle矩形区域

Rectangle是一个矩形区域元素组件,它没有内容,只是一个矩形区域,可以设置背景颜色、边框等样式,如下所示:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.6、Ellipse椭圆区域

Ellipse是一个椭圆区域,和Rectangle矩形区域类型,都不能设置显示的内容,仅仅是表示一块区域。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.7、Line斜线

Line是表示的线条元素,线条只有两个方向,分别是:从左上到右下的方向、从左下到右上的方向。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

如果你想要一个水平的线条,那么你可以使用StaticText静态文本组件代替,只要设置StaticText组件的高度等于1px,这样从视觉上也就实现了水平线条的效果拉。

1.8、Generic组件(TODO)

TODO,目前我还不了解这个组件。

1.9、Frame组件(TODO)

TODO,目前我还不了解这个组件。

1.10、Subreport组件

Subreport是子报表组件,它可以在一张报表中嵌入另一个报表,从而实现父子报表的功能,父子报表我在之前的文章中有介绍了,可以看下这篇文章【【JasperReports笔记04】如何使用Jasper Studio制作父子报表,并且通过Java + Parameters参数填充模板文件】。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.11、Barcode条码组件

Barcode是一个条码组件,条码的类型有很多种可以选择:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

条码组件是可以使用某种设备,扫描对应的条码就可以读取到条码中保存的数据内容,例如:二维码。Barcode可以设置一个Code Expression代码表达式,这个就是条码所表示的信息内容。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

当我们使用微信扫描对应的条码之后,就可以获取到条码中保存的数据信息。

1.12、List列表组件

List是一个列表组件,顾名思义,List是可以显示很多个的一个组件,List组件最外层是一个列表项区域,然后再每一项中可以定义具体的内容,可以放置其他的组件元素,从而制作出复杂的模板文件,如下所示:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

双击List组件,此时会进入到列表项的编辑区域,如下:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

Java代码中渲染List组件,代码如下:

package com.gitcode.demo.web;

import com.gitcode.demo.util.JasperReportsUtil;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2023/8/29 22:08
 * @Author ZhuYouBin
 * @Description: JasperReport 中的 List 组件
 */
@RestController
@RequestMapping("/api/report")
public class ListDemoController {

    @GetMapping("/list")
    public String listDemo() throws Exception {
        ClassPathResource resource = new ClassPathResource("jasper/ListDemo.jasper");
        String templatePath = resource.getPath();
        String fileName = "List列表模板文件";
        // 设置 parameters 参数
        Map<String, Object> parameters = new HashMap<>();
        // TODO 模拟数据
        List<Map<String, Object>> list = this.getData(10);
        parameters.put("list_data", list);
        // 执行导出操作
        return JasperReportsUtil.generateReport(templatePath, fileName, "pdf", parameters);
    }

    private List<Map<String, Object>> getData(int num) {
        List<Map<String, Object>> ansMap = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            Map<String, Object> main = new HashMap<>();
            main.put("name", "名称_00" + i);
            main.put("type", "类型_00" + i);
            ansMap.add(main);
        }
        return ansMap;
    }
}

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

列表项可以自定义,根据实际需求来搞呗!!!

1.13、Chart图表(TODO)

TODO,目前我还不了解这个组件。

1.14、Crosstab组件(TODO)

TODO,目前我还不了解这个组件。

1.15、Table表格组件

Table是一个表格组件,如下所示:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

拖拽Table表格到Detail区域之后,设置一下表格的样式,双击选中的表格组件,此时会跳转到Table编辑区域,如下:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

表格模板文件制作如下:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

创建一个parameters参数,并且设置类型是【net.sf.jasperreports.engine.data.JRBeanCollectionDataSource】集合,如下:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

修改Table表格的数据源为表达式,如下。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

在Java代码中通过进行数据源的传递。

package com.gitcode.demo.web;

import com.gitcode.demo.util.JasperReportsUtil;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2023/8/30 22:12
 * @Author ZhuYouBin
 * @Description:
 */
@RestController
@RequestMapping("/api/report")
public class TableDemoController {


    @GetMapping("/table-demo")
    public String exportFile(String format) throws Exception {
        ClassPathResource resource = new ClassPathResource("jasper/TableDemo.jasper");
        String templatePath = resource.getPath();
        String fileName = "Table表格模板文件";
        // 表格数据集是 JRBeanCollectionDataSource 类型的,也就是 JavaBean 实体类类型
        List<Map<String, String>> data = this.getData(100);
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(data);
        // 执行导出操作
        return JasperReportsUtil.generateReport(templatePath, fileName, format, new HashMap<>(), dataSource);
    }

    private List<Map<String, String>> getData(int num) {
        List<Map<String, String>> ansMap = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            Map<String, String> map = new HashMap<>();
            // 这里的 key 必须和模板文件中的 Field 字段的名称相同
            map.put("name", "name" + i);
            map.put("sex", i % 2 == 0 ? "male" : "female");
            map.put("age", (i + 20) + "");
            ansMap.add(map);
        }
        return ansMap;
    }
}

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

1.16、Map组件(TODO)

TODO,目前我还不了解这个组件。

1.17、SpiderChart组件(TODO)

TODO,目前我还不了解这个组件。

二、复合元素

2.1、PageNumber

PageNumber表示的是当前页码,从1开始,依次递增。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

2.2、TotalPages

Total Pages表示的总页码,也就是对应的报表总页数。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

2.3、CurrentDate

Current Date表示的是当前时间(年月日),对应Java中的java.util.Date,可以指定显示的日期格式。

2.4、Time

Time表示的是当前时间(时分),对应Java中的java.util.Date,可以指定显示的日期格式。

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

运行效果:

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等),【WPSP笔记】,JasperReports,Jasper报表开发,Table组件,Jasper组件元素

到此,JasperReports报表中的基础组件元素就介绍完啦,还是要在实际的需求中去使用,才能够明白这些组件应该使用在哪些场景下。

综上,这篇文章结束了,主要介绍JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)。文章来源地址https://www.toymoban.com/news/detail-686429.html

到了这里,关于【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器

    这篇文章,主要介绍微服务组件之OpenFeign相关配置信息及RequestInterceptor请求拦截器的使用。 目录 一、OpenFeign注解和配置信息 1.1、常见注解 (1)@EnableFeignClients (2)@FeignClient 1.2、常见配置信息 二、RequestInterceptor请求拦截器 2.1、实现RequestInterceptor接口 2.2、全局配置拦截器

    2024年02月14日
    浏览(37)
  • 「 CISSP学习笔记 」06. 安全开发

    该知识领域涉及如下考点,具体内容分布于如下各个子章节: 理解安全并将其融入软件开发生命周期 (SDLC) 中 在软件开发环境中识别和应用安全控制 评估软件安全的有效性 评估获得软件对安全的影响 定义并应用安全编码准则和标准 6.1.1. 软件开发 系统开发的每个阶段都应当

    2024年01月19日
    浏览(32)
  • Android笔记(六):JetPack Compose常见的UI组件

    Text显示的文本来源可以引用res-values-strings.xml中的资源,如第一个显示文本所示。 点击按钮前: 点击按钮后: 点击第一个圆角按钮不放时,显示为按钮:true Button有两方面需要注意: (1) Buttton有一个参数interactionSource,用来监听组件状态的事件源,通过它获取组件的状态来

    2024年02月04日
    浏览(55)
  • 鸿蒙开发实战项目(六十七):常见组件和容器低代码开发示例(ArkTS)

    本文 详细代码 需订阅下面专栏获取(订阅后私信邮箱+项目名): https://blog.csdn.net/m0_68036862/category_12333038.html 目录 介绍 环境搭建 代码结构解读 创建低代码工程

    2024年02月21日
    浏览(44)
  • 前端开发笔记 | React Hooks子组件和父组件交互

    前端开发框架目前比较常用的就是react、vue等,其中使用React Hooks 带来了不少的好处,今天来聊聊React Hooks开发方式下,子组件和父组件的交互。 子组件定义 父组件调用子组件 父组件定义 子组件中刷新父组件按钮文案 实际效果:点击子组件中“改变父组件按钮”,父组件中

    2024年02月11日
    浏览(82)
  • Flutter开发笔记:Flutter 布局相关组件

    Flutter开发笔记 Flutter 布局与布局组件 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.net Email: 291148484@163.com. Shenzhen China Address of this article: https://blog.csdn.net/qq_28550263/article/details/131419782 【介绍】:本文介绍Flutter 布局相关组件。 Flutter 中提供了丰富的原生布局组

    2024年02月11日
    浏览(56)
  • Android开发—布局LinearLayout,布局RelativeLayout常见属性根据父容器定位,兄弟组件定位,FrameLayout帧布局的绘制原理是,TableLayout

    1. orientation  布局中组件的排列方式 2. gravity  控制组件所包含的子元素的对齐方式,可多个组合 3. layout _ gravity  控制该组件在父容器里的对其方式 4. background  为该组件设置一个背景图片,或者是直接用颜色覆盖 5. divider  分割线 6. showDividers 设置分割线所在的位置,

    2024年02月03日
    浏览(43)
  • 06.微服务组件 Gateway

    1、Gateway 简介 在SpringCloud中网关的实现包括两种: Zuul是基于Servlet的实现,属于阻塞式编程。 SpringCloudGateway是基于Spring5中提供的WebFlux心属于响应式编程的实现,具备更好的性能。 2、搭建网关服务 步骤一:创建gateway服务,引入依赖 步骤二:配置nacos地址、路由等信息 路由

    2024年02月04日
    浏览(36)
  • 【day 06】vue的组件

    组件 组件就是把一个网页分割成独立的小的模块,然后通过把模块进行组合,构建成一个大型的应用 单文件组件 只有一个组件 html css js 都在这个文件内 非单文件组件 可有多个组件 全局注册 语法糖的写法 省略 Vue.extend() 在使用 child组件时 内部会自己调用 注意:子组件内

    2024年02月06日
    浏览(39)
  • 2023-06-01:讲一讲Redis常见数据结构以及使用场景。

    2023-06-01:讲一讲Redis常见数据结构以及使用场景。 答案2023-06-01: 字符串(String) 适合场景 缓存功能 Redis 作为缓存层,MySQL 作为存储层,在大部分请求中,数据的读取通常是从 Redis 中获取。由于 Redis 具有支持高并发的特性,因此缓存层通常能够加速读写操作,并减轻后端

    2024年02月07日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包