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
目录,其中增加下列文件
文件下载,后面补充下载途径。
新增jrxml目录存放ireport文件
在src/main/resources
下新建一个jrxml
目录
ireport绘制(无database)
创建文件
新增一个ireport文件,命名为003
设定数据源为empty datasource
增加传递参数集合
在Parameters
中,新增Parameters
,命名为userlists
,类型设置为list
。
Fields 配置集合中元数据属性
全选配置好的列表数据属性,拖拽至中间视图区的detail
中
新增dataset
点击左上角003
,右键选择Add Dataset
直接下一步
。
新增dataset的fields
将主体
中的Fields
的属性,复制到userlists DataSet
中。
报表中文列
中文列需要设定文本格式
与样式
。否则不会显示
保存与编译
点击保存,点击编译,生成对应的文件,并将文件复制到springboot项目中的jrxml
文件夹中
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;
}
启动项目,请求测试。效果预览如下:
配置字体文件
字体文件csdn下载地址