标签:outputStream name 打印 list JasperReport 使用 多页 模板
JasperReport介绍
JasperReport是一个非常强大,易用的开源报表引擎,用Java语言编写。可以导出各种格式的文档,如HTML,PDF,Execel,Word等)
一、安装Jaspersoft Sutdio
Jaspersoft Sutdio是一个设计报表的模板工具
下载Jaspersoft Sutdio CE 下载地址
二、使用Saspersoft Studio创建模板
1、创建工程New->Project
选择JasperReports Project
命名为ReportFirst
2、创建模板
New-> Jasper Report->
选择Blank A4,点击Next
命名为template1.jrxml
Data Adapter选择One Empty Record,即空数据源。
3、模板设计界面的区域说明
Title: 标题区,如果数据有多页只会在第一页打印
Page Header: 页头区,多页的情况下每页都会打印
Column Header:列头区,配合下面的Detail区打印列表数据,多页的情况下每页都会打印
Detail:可以新增多个Detail区,可以组合打印出多个列表数据,多页的情况下每页都会打印
Column Footer:列表底部区,多页的情况下每页都会打印
Page Footer:页底部区,多页的情况下每页都会打印
Summary:合计区,只会在最后一页打印
4、添加元素
1) 在右侧Basic Elements区域拖拽一个Static Text, 文字为: This is title head。
2) 在左侧Outline区域Parameters上右键-> Creat Parameter.
命名为name, Class为java.lang.String
3)拖拽那么属性到Page Header
4) 在左侧Outline区域Fields右键创建两个字段 name,age
然后将name和age拖拽到Detail区域。
选择预览,name输入zhangsan,效果如下图所示
5、编译模板
生成了template1.jasper文件
三、在Java中使用模板
1)引入依赖
<dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.12.1</version> </dependency>
2) 把template1.jasper放入资源文件夹中
3) 编写生成pdf代码
@GetMapping("/testJasper") public void createPdf(HttpServletRequest request, HttpServletResponse response) throws Exception { HashMap<String,Object> params = new HashMap<>(); params.put("name","title name"); List<HashMap> list = new ArrayList<>(); for(int i = 0; i < 20; i++){ HashMap<String,String> item = new HashMap<>(2); item.put("name","zhangsan-" + i); item.put("age",String.valueOf(i + 10)); list.add(item); } String templatePath = "templates/template1.jasper"; JasperReportUtil.exportToPdf(templatePath,params,list, response); }
exportToPdf方法:
public static void exportToPdf(String jasperPath, Map parameters, List<?> list, HttpServletResponse response) throws Exception { OutputStream outputStream = response.getOutputStream(); try { ClassPathResource resource = new ClassPathResource(jasperPath); response.setContentType(getContentType(ReportType.PDF)); InputStream jasperStream = resource.getInputStream(); JasperPrint jasperPrint = getJasperPrint(jasperStream, parameters, list); JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); } catch (Exception e) { //log.error("读取报表异常", e); outputStream.write("读取报表异常".getBytes()); } finally { outputStream.flush(); outputStream.close(); } }
http://127.0.0.1:8080/testJasper
效果如下图所示:
标签:outputStream,name,打印,list,JasperReport,使用,多页,模板 来源: https://www.cnblogs.com/linlf03/p/14880962.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。