网站首页 > 编程文章 正文
本文来源视频
https://edu.csdn.net/course/detail/30953
上一讲的json数据源比较单一,有些报表分为表头和明细,比较复杂,我们来看看这种怎么做
我们先来看看要做的报表样式
- 准备个json 文件PurchaseInfo.json放到jaspersoft studio的报表项目里,我们要做一个表头是购买人的基本信息,明细时购买记录的这样一个报表。
{
"loginId": "lisi",
"address": "长安大街1号",
"phone": "13344444444",
"loginName": "李四",
"location": "北京",
"orderList": [{
"orderId": "20200101",
"price": 22.2,
"count": 2,
"purchaseTime": 1595336379791,
"productName": "笔记本"
}, {
"orderId": "20200102",
"price": 222.02,
"count": 1,
"purchaseTime": 1595336379791,
"productName": "硬盘"
}]
}
2.在studio 里切换到 Repository 视图里,创建一个JSON数据源。引用PurchaseInfo.json文件
3.创建报表模板 SampleMain.jrxml,
主报表数据源选择json中的用户信息的字段。
4.将抬头字段拖到到报表模板里的TITLE位置,并拖动子报表元素到detail里。
5.创建子报表SampleSub.jrxml,创建过程和普通报表一样。子报表保留detail区域,其余删掉。
6.选择子报表数据源 ,选择orderList双击到了右边的框里,点Read Fields,下方列出购买记录的所有字段。
7.设置子报表,选择子报表模板,拖动字段到子报表模板里。也可以给子报表设置写表格,背景色等。
8.回到主报表模板,进行设置。在Outline窗口创建一个自定义的Parameter-subPath,代表子报表的路径。并进行Expression,Data source Express 的配置。
$P{subPath}+"Sample2sub1.jasper",((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("orderList")
9.先编译子报表,再编译主报表,点击预览,输入subPath的路径。
10.java代码的编写
@GetMapping(value = "/reportjson3")
public void reportjson3(HttpServletRequest request, HttpServletResponse response) throws IOException {
try {
String reportName ="sample2.jasper";
response.setContentType("application/pdf; charset=utf-8");
response.setDateHeader("Expires", 0);
OutputStream os = response.getOutputStream();
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(resourceLoader.getResource("classpath:/jasper1/"+reportName).getInputStream());
String subPath = resourceLoader.getResource("classpath:/jasper1/").getURL().toString();
HashMap
hashMap.put("subPath", subPath);
String json = buildJson();
System.out.println(json);
InputStream inputStream = new ByteArrayInputStream(json.getBytes("UTF-8"));
hashMap.put("JSON_INPUT_STREAM", inputStream); //填充报表数据源数据流
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hashMap);
JasperExportManager.exportReportToPdfStream(jasperPrint,os);
} catch (Exception e) {
e.printStackTrace();
}
}
猜你喜欢
- 2025-05-14 2014年最流行前端开发框架对比评测
- 2025-05-14 七爪源码:如何使用 Next.js 构建 Shopify 店面
- 2025-05-14 Web 前端怎样入门?
- 2025-05-14 我为什么不建议你使用框架
- 2025-05-14 推荐几个好用的React UI 框架
- 2025-05-14 PDFsharp:强大的 .NET 跨平台 PDF 处理库
- 2025-05-14 一组开源免费的Web动画图标,荐给需要的设计师和程序员
- 2025-05-14 salesforce 零基础学习(二十九)Record Types简单介绍
- 2025-05-14 Vue+SpringBoot 集成 PageOffice 实现在线编辑Word、excel文档
- 2025-05-14 PDF管理API-Aspose.PDF 11月新更上线!支持居中对齐输出HTML
你 发表评论:
欢迎- 05-142014年最流行前端开发框架对比评测
- 05-14七爪源码:如何使用 Next.js 构建 Shopify 店面
- 05-14Web 前端怎样入门?
- 05-14我为什么不建议你使用框架
- 05-14推荐几个好用的React UI 框架
- 05-14PDFsharp:强大的 .NET 跨平台 PDF 处理库
- 05-14一组开源免费的Web动画图标,荐给需要的设计师和程序员
- 05-14salesforce 零基础学习(二十九)Record Types简单介绍
- 最近发表
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)