Create and use CSV data in a subreport
背景
创建 CSV 文件
创建数据适配器
创建主报表和子报表
连接数据集
创建报告字段
连接子报表
打开文本编辑器。
粘贴以下内容:
将文件另存为 data.csv 到已知位置。
启动 Jaspersoft Studio。
打开项目资源管理器。
右键单击该项目。
单击新建 → 数据适配器。
将文件名设置为:csv.xml 。
点击下一步。
单击 CSV 文件。
点击下一步。
将名称设置为:CSV
单击文件。
浏览并选择在上一节中创建的 data.csv 。
单击从文件的第一行获取列名。
单击完成。
单击文件 → 新建 → Jasper 报告。
选择空白 A4。
点击下一步。
将文件名设置为:main.jrxml
点击下一步。
将数据适配器设置为:csv.xml 。
单击完成。
单击文件 → 新建 → Jasper 报告。
选择空白 A4。
点击下一步。
将文件名设置为:subreport.jrxml
单击完成。
切换到 Jaspersoft Studio 中的主报告选项卡 (main.jrxml )。
单击设计选项卡。
在大纲选项卡中,右键单击 main。
单击创建数据集。
将数据集名称设置为:CSV
点击下一步。
将数据适配器设置为:csv.xml 。
点击下一步。
单击 >> 将字段向右移动。
单击完成。
在大纲中,展开 main。
右键单击 .csv。
单击连接到主数据集。
将数据适配器语言设置为:CSV
单击完成。
在大纲中,右键单击 main。
单击数据集和查询。
将语言设置为:CSV 。
单击读取字段。
单击
将一个子报表基本元素拖到主报表的标题栏上。
单击选择报告文件。
选择工作区资源。
点击浏览
选择 subreport.jrxml。
单击
再次单击
单击完成。
右键单击子报表元素。
单击容器大小→适合两者。
在属性选项卡中,单击子报表。
切换到 main.jrxml 报告。
在大纲选项卡中,展开主 → 字段
选择字段(不要使用 CSV 字段)
右键单击选定的字段。
单击复制。
切换到 subreport.jrxml 报告。
右键单击字段。
单击粘贴。
选择字段。
将字段拖放到详细信息带上。
返回到 main.jrxml 报告。
将子报表上的数据源表达式设置为:$P{REPORT_DATA_SOURCE} 。
单击全部保存。
单击构建。
运行主报告。
Jaspersoft 社区论坛充斥着关于如何将 CSV 数据源与报告一起使用的问题。
问题
在使用 Jaspersoft Studio 时,使用本地文件作为数据源很方便。完成此任务的说明充其量是零碎的,最坏的情况是不完整的。
问题
在主报告中使用 CSV 文件(数据源)并让子报告使用该数据需要哪些步骤?
注意:此解决方案会从子报告的列表中删除第一个结果,这需要解决方法来解决,此答案中未描述。
概述
主要步骤包括:
创建 CSV 文件
按如下方式创建 CSV 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | city,age,name,address,status "Dallas",47,"Janet Fuller","445 Upland Pl.","Trial" "Lyon",38,"Andrew Heiniger","347 College Av.","Active" "Dallas",43,"Susanne Smith","2 Upland Pl.","Active" "Berne",22,"Bill Ott","250 - 20th Ave.","Active" "Boston",32,"Michael Ott","339 College Av.","Trial" "Dallas",4,"Sylvia Ringer","365 College Av.","Active" "Boston",23,"Julia Heiniger","358 College Av.","Active" "Chicago",39,"Mary Karsen","202 College Av.","Active" "Dallas",40,"Susanne Miller","440 - 20th Ave.","Trial" "Berne",9,"James Schneider","277 Seventh Av.","Active" "Dallas",36,"John Steel","276 Upland Pl.","Suspended" "Chicago",35,"George Karsen","412 College Av.","Suspended" "Dallas",37,"Michael Clancy","19 Seventh Av.","Deleted" "Lyon",2,"Anne Miller","20 Upland Pl.","Active" "Dallas",0,"Laura Steel","429 Seventh Av.","Active" "Lyon",28,"Susanne White","74 - 20th Ave.","Deleted" "Paris",5,"Laura Miller","294 Seventh Av.","Active" "Lyon",17,"Laura Ott","443 Seventh Av.","Active" "New York",46,"Andrew May","172 Seventh Av.","Active" "New York",44,"Sylvia Ott","361 College Av.","Active" "Dallas",19,"Susanne Heiniger","86 - 20th Ave.","Active" "Chicago",11,"Julia White","412 Upland Pl.","Active" "Dallas",10,"Anne Fuller","135 Upland Pl.","Active" "New York",41,"Bill King","546 College Av.","Deleted" "Oslo",45,"Janet May","396 Seventh Av.","Active" "Paris",18,"Sylvia Fuller","158 - 20th Ave.","Trial" "San Francisco",48,"Robert White","549 Seventh Av.","Active" "Paris",25,"Sylvia Steel","269 College Av.","Suspended" "San Francisco",7,"James Peterson","231 Upland Pl.","Active" "Oslo",42,"Robert Ott","503 Sixth Av.","Trial" |
CSV 文件已创建。
创建数据适配器
如下创建数据适配器:
数据适配器已创建。
创建主报表和子报表
本节介绍如何创建报告。
创建主报告
如下创建主报表:
主报表已创建。
请注意,数据源尚未连接到主报表。这就是人们遇到麻烦的地方。分配 CSV 数据源并不意味着报表可以"查询"数据。需要一个额外的步骤,本答案稍后将对此进行描述。
创建子报表
如下创建子报表:
子报表已创建。
创建数据集
从 CSV 文件创建数据集,如下所示:
CSV 数据集已创建。
连接数据集
数据集已连接。
创建报告字段
在主报表中创建字段如下:
报告字段已创建。
连接子报表
将子报表连接到主报表,如下所示:
输出类似于: