痞子軍團本部
  • 痞子軍團本部
  • 軟體開發
    • Java
      • Hibernate
      • JasperReport
      • Java Web Start
      • JAXB
      • JVM
      • Spring
      • ZK
    • JS
      • pixi.js
    • Browser
    • 圖學
    • PHP
  • 軟體工程
    • Eclipse
    • Git
    • GitHub
    • Scrum
  • 雜七雜八
    • Markdown
    • Mermaid.js
    • GitBook
    • Jeff 大師語錄
    • 3C 產品秘技
  • Portfolio
    • 飛行紀錄
    • 桌遊紀錄
      • 極品區
      • 優質區
      • 正常區
      • 雞肋區
      • 死亡區
    • 島呼冊店
    • 軍旅生涯
Powered by GitBook
On this page
  • Subreport
  • iReport Editor

Was this helpful?

  1. 軟體開發
  2. Java

JasperReport

Subreport

Subreport 也是對應到一個 .jrxml, 可以作到只切換 / 動態指定整個 report 其中一部分的需求, 提高 report 的重用率、減少維護成本。

在 main report 當中加入 Subreport 之後, Subreport 的 Subreport Expression 指到一個 parameter,假設為 $P{SubReport}, $P{SubReport} 的 Parameter Class 是 net.sf.jasperreports.engine.JasperReport; Subreport 的 Data Source Expression 指到一個 parameter,假設為 $P{ReportVO}, $P{ReportVO} 的 Parameter Class 要是 data source,個人習慣是用 JRBeanCollectionDataSource。

在 Java 當中:

Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(
    "ReportVO",
    new JRBeanCollectionDataSource(getSubreportData())
);
parameters.put(
    "SubReport",
    JRLoader.loadObject(
        loader.getResourceAsStream(getJasperFile())
    )
);

//把 parameters 丟進 main report 的 JasperFillManager.fillReport()

這樣 Subreport 就會以 getJasperFile() 的 .jasper 檔案 搭配 getSubreportData() 的內容值產生報表。 只不過不是獨立存在、而是 main report 的一部分。

iReport Editor

注意 ######

  • 這裡是 4.6.0 版的使用經驗

  • 官方在 2016 年就不再維護 iReport,要改用 Jaspersoft Studio

要切換到 Preview 才會產生 .jasper 檔

如果修改 XML(尤其是 <parameter> 或是 <field>),最好存檔之後關掉重新載入。 千萬不要直接切到 Designer,不然不但 Designer 沒有載入修改後的 XML, 還有可能把之前改的全部復原回去...... Orz

PreviousHibernateNextJava Web Start

Last updated 5 years ago

Was this helpful?