ZetCode

JasperReports 导入标签

最后修改日期:2024 年 2 月 12 日

在本文中,我们将展示如何在 JasperReports 模板中使用 import 标签。

JasperReports 是一个开源报告库。它可以创建各种格式的报告,包括 PDF、HTML、XLS 或 CSV。JasperReports 创建面向页面、可直接打印的文档。

import 标签用于将 Java 类导入到报表中。它消除了在报表表达式中指定完整类名的需要。

<import value="java.time.LocalDateTime"/>

此代码将 LocalDateTime 类导入到报表中。现在我们可以使用它,而无需指定完全限定名。类名在 value 属性中指定。

示例

该示例使用 import 语句。

report.gvy
package com.zetcode

@Grab(group='net.sf.jasperreports', module='jasperreports', version='6.21.0')
@Grab(group='com.github.librepdf', module='openpdf', version='1.3.39')

import net.sf.jasperreports.engine.JasperCompileManager
import net.sf.jasperreports.engine.JasperFillManager
import net.sf.jasperreports.engine.JasperExportManager
import net.sf.jasperreports.engine.JREmptyDataSource

def xmlFile = 'report.xml'
def jrReport = JasperCompileManager.compileReport(xmlFile)

def params = [:]
def jrPrint = JasperFillManager.fillReport(jrReport, params, new JREmptyDataSource())

JasperExportManager.exportReportToPdfFile(jrPrint, 'report.pdf')

Groovy 代码将编译、填充并导出报表。

report.gvy
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
        "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<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="report" topMargin="20" bottomMargin="20">

    <import value="java.time.LocalDateTime"/>

    <detail>
        <band height="70">

            <textField>
                <reportElement x="5" y="5" width="190" height="15"/>
                <textFieldExpression>
                    <![CDATA[LocalDateTime.now()]]>
                </textFieldExpression>
            </textField>

            <textField>
                <reportElement x="5" y="45" width="190" height="15"/>
                <textFieldExpression>
                    <![CDATA[java.time.Instant.now()]]>
                </textFieldExpression>
            </textField>
                
        </band>
    </detail>

</jasperReport>

在报表中,我们使用了两个类:LocalDateTimeInstant。第一个类已导入,可以直接使用,无需包名。第二个类必须使用完全限定名。

<import value="java.time.LocalDateTime"/>

我们将 LocalDateTime 导入到报表中。

<textFieldExpression>
    <![CDATA[LocalDateTime.now()]]>
</textFieldExpression>

textFieldExpression 中,我们调用了 LocalDateTime.now 方法。

<textFieldExpression>
    <![CDATA[java.time.Instant.now()]]>
</textFieldExpression>

在这里,我们使用了 Instant 类的完整名称:java.time.Instant

在本文中,我们展示了如何将 Java 类导入到报表表达式中以简化它们。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 JasperReports 教程