> 文章列表 > ireport——springboot整合并导出列表数据(无database)

ireport——springboot整合并导出列表数据(无database)

ireport——springboot整合并导出列表数据(无database)

文章目录

  • 前言
  • 开发环境
  • 依赖引入
    • properties 设置
    • 主要依赖
  • 项目配置
    • 配置中文显示与不乱码支持
    • 配置字体样式
    • 新增jrxml目录存放ireport文件
  • ireport绘制(无database)
    • 创建文件
    • 增加传递参数集合
    • Fields 配置集合中元数据属性
    • 新增dataset
    • 新增dataset的fields
    • 报表中文列
    • 保存与编译
  • 新增测试接口
  • 配置字体文件

前言

前几篇博客,重点说明了ireport 的安装与基本表格绘制等。本篇博客主要进行springboot整合,并进行报表的预览导出

开发环境

  • springboot 2.1.4.RELEASE
  • ireport 5.6

依赖引入

properties 设置

<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><org.mapstruct.version>1.3.0.Final</org.mapstruct.version><jasperReport.version>6.16.0</jasperReport.version><jasperReport-fonts.version>6.16.0</jasperReport-fonts.version><groovy-all.version>2.5.9</groovy-all.version><itext-pdfa.version>5.5.13.2</itext-pdfa.version><dom4j.version>2.1.3</dom4j.version>
</properties>

主要依赖

<dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>${jasperReport.version}</version><exclusions><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></exclusion><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></exclusion><exclusion><artifactId>commons-beanutils</artifactId><groupId>commons-beanutils</groupId></exclusion><exclusion><artifactId>commons-collections</artifactId><groupId>commons-collections</groupId></exclusion><exclusion><artifactId>commons-logging</artifactId><groupId>commons-logging</groupId></exclusion></exclusions>
</dependency><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>${groovy-all.version}</version><type>pom</type>
</dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports-fonts</artifactId><version>${jasperReport-fonts.version}</version>
</dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-pdfa</artifactId><version>${itext-pdfa.version}</version>
</dependency>
<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>${dom4j.version}</version>
</dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version>
</dependency>
<dependency><groupId>org.jxls</groupId><artifactId>jxls</artifactId><version>2.8.1</version>
</dependency>
<dependency><groupId>org.jxls</groupId><artifactId>jxls-poi</artifactId><version>2.8.1</version>
</dependency>
<dependency><groupId>org.jxls</groupId><artifactId>jxls-reader</artifactId><version>2.0.6</version>
</dependency>
<dependency><groupId>org.jxls</groupId><artifactId>jxls-jexcel</artifactId><version>1.0.9</version>
</dependency>
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.8</version>
</dependency>

项目配置

配置中文显示与不乱码支持

src/main/resources下新增一个jasperreports_extension.properties文件,并增加下列配置项:

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

配置字体样式

src/main/resources下新建一个fonts目录,其中增加下列文件
ireport——springboot整合并导出列表数据(无database)

文件下载,后面补充下载途径。

新增jrxml目录存放ireport文件

src/main/resources下新建一个jrxml目录

ireport绘制(无database)

创建文件

新增一个ireport文件,命名为003
ireport——springboot整合并导出列表数据(无database)
设定数据源为empty datasource
ireport——springboot整合并导出列表数据(无database)

增加传递参数集合

Parameters中,新增Parameters,命名为userlists,类型设置为list
ireport——springboot整合并导出列表数据(无database)

ireport——springboot整合并导出列表数据(无database)

Fields 配置集合中元数据属性

ireport——springboot整合并导出列表数据(无database)
全选配置好的列表数据属性,拖拽至中间视图区的detail
ireport——springboot整合并导出列表数据(无database)

新增dataset

点击左上角003,右键选择Add Dataset
ireport——springboot整合并导出列表数据(无database)

ireport——springboot整合并导出列表数据(无database)
直接下一步

新增dataset的fields

主体中的Fields的属性,复制到userlists DataSet中。
ireport——springboot整合并导出列表数据(无database)

报表中文列

中文列需要设定文本格式样式。否则不会显示
ireport——springboot整合并导出列表数据(无database)

保存与编译

点击保存,点击编译,生成对应的文件,并将文件复制到springboot项目中的jrxml文件夹中
ireport——springboot整合并导出列表数据(无database)

003.jasper 为编译后的文件
003.jrxml 为源文件

新增测试接口

@GetMapping("/test2")
public void print2(HttpServletResponse response) throws Exception {// 非列表参数  $PMap<String, Object> params = new HashMap<>();params.put("userlists",getPrintMap2());// $FList<UserVo> maps = getPrintMap2();log.info("组装后的数据:{}", JSON.toJSONString(maps));//JasperHelper.exportPDF(response,"用户数据表","jrxml/002.jasper",maps,params,false);JRBeanCollectionDataSource dataSource  = new JRBeanCollectionDataSource(getPrintMap2());File jasperFile = ResourceUtils.getFile("classpath:jrxml/003.jasper");JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(jasperFile), params,dataSource);JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream());response.setCharacterEncoding("utf-8");response.setContentType("application/pdf");response.setHeader("content-disposition", "inline;filename=" + URLEncoder.encode("003", "UTF-8") + ".pdf");
}private List<UserVo> getPrintMap2() {List<UserVo> data = new ArrayList<>();for (int i = 0; i < 10; i++) {data.add(new UserVo(""+i,"xj_"+i,"中文测试显示问题"));}return data;
}

启动项目,请求测试。效果预览如下:
ireport——springboot整合并导出列表数据(无database)

配置字体文件

字体文件csdn下载地址