【问题标题】:Create and use CSV data in a subreport在子报表中创建和使用 CSV 数据
【发布时间】:2017-12-05 18:14:47
【问题描述】:

背景

Jaspersoft 社区论坛是 riddled,有关于如何将 CSV 数据源用于报告的未回答问题。

问题

使用Jaspersoft Studio时,可以方便的使用本地文件作为数据源。完成这项任务的说明充其量是零碎的,最坏的情况是不完整的。

问题

在主报告中使用 CSV 文件(数据源)并让子报告使用该数据需要哪些步骤?

【问题讨论】:

    标签: csv jasper-reports subreport


    【解决方案1】:

    注意:此解决方案会从子报表的列表中删除第一个结果,这需要解决方法来解决,此答案中未描述。

    概述

    主要步骤包括:

    1. 创建 CSV 文件
    2. 创建数据适配器
    3. 创建主报表和子报表
    4. 连接数据集
    5. 创建报告字段
    6. 连接子报表

    创建 CSV 文件

    按如下方式创建 CSV 文件:

    1. 打开文本编辑器。
    2. 粘贴以下内容:
      城市、年龄、姓名、地址、状态
      “达拉斯”,47,“珍妮特富勒”,“445 Upland Pl.”,“审判”
      “里昂”,38,“安德鲁·海尼格”,“347 College Av.”,“活跃”
      “达拉斯”,43,“苏珊·史密斯”,“2 Upland Pl.”,“活跃”
      “伯尔尼”,22,“比尔奥特”,“250 - 20th Ave.”,“活跃”
      “波士顿”,32,“迈克尔·奥特”,“339 College Av.”,“审判”
      “达拉斯”,4,“西尔维娅·林格”,“365 College Av.”,“活跃”
      “波士顿”,23,“朱莉娅·海尼格”,“358 College Av.”,“活跃”
      “芝加哥”,39,“玛丽·卡森”,“202 College Av.”,“活跃”
      “达拉斯”,40,“苏珊米勒”,“440 - 20th Ave.”,“审判”
      “伯尔尼”,9,“詹姆斯施耐德”,“277 第七大道”,“活跃”
      “达拉斯”,36,“约翰斯蒂尔”,“276 高地广场”,“暂停”
      “芝加哥”,35,“乔治·卡森”,“412 College Av.”,“暂停”
      “达拉斯”,37,“迈克尔克兰西”,“19 第七大道”,“已删除”
      “里昂”,2,“安妮·米勒”,“20 Upland Pl.”,“活跃”
      “达拉斯”,0,“劳拉钢铁”,“第四大道 429 号”,“活跃”
      “里昂”,28,“苏珊·怀特”,“74 - 20th Ave.”,“已删除”
      “巴黎”,5,“劳拉·米勒”,“第七大道 294 号”,“活跃”
      “里昂”,17,“劳拉·奥特”,“第四大道 443 号”,“活跃”
      “纽约”,46,“安德鲁·梅”,“第七大道 172 号”,“活跃”
      “纽约”,44,“西尔维娅奥特”,“361 College Av.”,“活跃”
      “达拉斯”,19,“苏珊娜·海尼格”,“86 - 20th Ave.”,“活跃”
      “芝加哥”,11,“朱莉娅怀特”,“412 Upland Pl.”,“活跃”
      “达拉斯”,10,“安妮·富勒”,“135 Upland Pl.”,“活跃”
      “纽约”,41,“比尔金”,“546 College Av.”,“已删除”
      “奥斯陆”、45、“珍妮特·梅”、“第七大道 396 号”、“活跃”
      “巴黎”,18,“西尔维娅·富勒”,“158 - 20th Ave.”,“审判”
      “旧金山”,48,“罗伯特怀特”,“549 第七大道”,“活跃”
      “巴黎”,25,“西尔维亚钢铁”,“269 College Av.”,“暂停”
      “旧金山”,7,“詹姆斯·彼得森”,“231 Upland Pl.”,“活跃”
      “奥斯陆”,42,“罗伯特·奥特”,“第五大道 503 号”,“审判”
      
    3. 将文件另存为data.csv 到已知位置。

    CSV 文件已创建。

    创建数据适配器

    如下创建数据适配器:

    1. 启动 Jaspersoft Studio。
    2. 打开项目浏览器
    3. 右键单击项目。
    4. 点击新建 → 数据适配器
    5. 文件名设置为:csv.xml
    6. 点击下一步
    7. 点击CSV文件
    8. 点击下一步
    9. 名称设置为:CSV
    10. 点击文件
    11. 浏览并选择在上一节中创建的data.csv
    12. 点击从文件的第一行获取列名
    13. 点击完成

    数据适配器已创建。

    创建主报表和子报表

    本节介绍如何创建报告。

    创建主报告

    如下创建主报表:

    1. 点击文件 → 新建 → Jasper 报告
    2. 选择Blank A4
    3. 点击下一步
    4. 文件名设置为:main.jrxml
    5. 点击下一步
    6. 数据适配器设置为:csv.xml
    7. 点击完成

    主报告已创建。

    请注意,数据源尚未连接到主报表。这就是人们遇到麻烦的地方。分配 CSV 数据源并不意味着报表可以“查询”数据。需要一个额外的步骤,在这个答案的后面进行描述。

    创建子报表

    按如下方式创建子报表:

    1. 点击文件 → 新建 → Jasper 报告
    2. 选择Blank A4
    3. 点击下一步
    4. 文件名设置为:subreport.jrxml
    5. 点击完成

    子报表已创建。

    创建数据集

    从 CSV 文件创建数据集,如下所示:

    1. 切换到 Jaspersoft Studio 中的主报告选项卡 (main.jrxml)。
    2. 点击设计标签。
    3. 大纲选项卡中,右键单击ma​​in
    4. 点击创建数据集
    5. 数据集名称设置为:csv
    6. 点击下一步
    7. 数据适配器设置为:csv.xml
    8. 点击下一步
    9. 点击>>将田地向右穿梭。
    10. 点击完成

    CSV 数据集已创建。

    连接数据集

    1. 大纲中,展开ma​​in
    2. 右键单击 csv
    3. 点击连接到主数据集
    4. 数据适配器语言设置为:csv
    5. 点击完成

    数据集已连接。

    创建报告字段

    在主报表中创建字段如下:

    1. 大纲中,右键单击ma​​in
    2. 点击数据集和查询
    3. 语言设置为:csv
    4. 点击读取字段
    5. 点击确定

    报告字段已创建。

    连接子报表

    按如下方式将子报表连接到主报表:

    1. 子报表基本元素拖到主报表的标题带上。
    2. 点击选择报告文件
    3. 选择工作区资源
    4. 点击浏览
    5. 选择subreport.jrxml
    6. 点击确定
    7. 再次点击确定
    8. 点击完成
    9. 右键单击子报表元素。
    10. 点击大小到容器→适合两者
    11. 属性标签中,点击子报告
    12. 切换到main.jrxml 报告。
    13. 大纲 标签中,展开 ma​​in → Fields
    14. 选择字段(不要使用 CSV 字段)
    15. 右键单击选定的字段。
    16. 点击复制
    17. 切换到subreport.jrxml 报告。
    18. 右键单击字段
    19. 点击粘贴
    20. 选择字段。
    21. 将字段拖放到 Detail 带区。
    22. 返回main.jrxml 报告。
    23. 将子报表上的数据源表达式设置为:$P{REPORT_DATA_SOURCE}
    24. 点击全部保存
    25. 点击构建
    26. 运行主报表。

    输出类似于:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多