📜  JasperReports-编译报告设计(1)

📅  最后修改于: 2023-12-03 15:15:54.491000             🧑  作者: Mango

JasperReports-编译报告设计

JasperReports是一个流行的开源报表工具,它能够生成各种格式的报告(PDF、Excel、HTML等)。

报告设计

JasperReports使用JasperStudio来设计报告。该工具有一个可视化设计器,可以通过拖放、设置属性以及自定义表达式来设计报表布局和样式。

示例代码:

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
  name="SampleReport" language="java" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">

  <field name="name" class="java.lang.String"/>
  <field name="age" class="java.lang.Integer"/>

  <title>
    <band height="50">
      <staticText>
        <reportElement x="0" y="0" width="555" height="30"/>
        <text><![CDATA[Sample Report]]></text>
      </staticText>
    </band>
  </title>

  <detail>
    <band height="20">
      <textField>
        <reportElement x="0" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
      </textField>
      <textField>
        <reportElement x="100" y="0" width="100" height="20"/>
        <textElement/>
        <textFieldExpression><![CDATA[$F{age}]]></textFieldExpression>
      </textField>
    </band>
  </detail>

</jasperReport>
编译报告

在设计完报告后,我们需要将设计好的JRXML文件编译成Jasper二进制文件,这样才能实现报告的输出。

示例代码:

InputStream input = getClass().getResourceAsStream("/SampleReport.jrxml");
JasperDesign design = JRXmlLoader.load(input);
JasperReport report = JasperCompileManager.compileReport(design);

当JasperReport被编译之后,我们就可以通过数据源来填充报表并输出到指定的格式。

示例代码:

InputStream input = getClass().getResourceAsStream("/sample.json");
JsonDataSource dataSource = new JsonDataSource(input);
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<>(), dataSource);

// 输出到PDF
JasperExportManager.exportReportToPdfFile(print, "SampleReport.pdf");
结语

使用JasperReports能够轻松地创建各种格式的报告,对于创建企业级报告有很大的帮助。在实践中,您可能需要涉及到更复杂的数据源和定制化的输出,但JasperReports提供了丰富的功能和可扩展的API,可以满足大多数需求。