我正在开发一个系统,其中包含使用JasperReports生成的大量报告。其中一个较新的功能是您可以为报告定义样式。
从可用的文档中我相信有一些方法可以使用定义样式的外部文件,您可以在jasper报告中引用它。这允许多个报告使用单一样式。
我找不到关于这是否是实际功能的具体信息,如果是,如何使用它。有谁知道是否有可能为jasper报告提供外部样式,如果有,那该怎么办?
答案 0 :(得分:28)
使用JasperReport templates。 JasperReports模板是以.jrtx
结尾的模板,可能与此类似(styles.jrtx
):
<?xml version="1.0"?>
<!DOCTYPE jasperTemplate
PUBLIC "-//JasperReports//DTD Template//EN"
"http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd">
<jasperTemplate>
<style name="Report Title" isDefault="false" hAlign="Center" fontSize="24" isBold="true"/>
<style name="Heading 1" isDefault="false" fontSize="18" isBold="true"/>
<style name="Heading 2" isDefault="false" fontSize="14" isBold="true"/>
</jasperTemplate>
然后在您的.jrxml
文件中,将其包含为模板:
...
<template>"styles.jrtx"</template>
...
iReport也理解这一点,因此您的样式会被导入并正确显示在iReport中(虽然我确实注意到它有时不会重新加载或重新编译)。
答案 1 :(得分:9)
您还可以通过使用在运行时传递到报表中的参数来避免在<template>
元素中指定实际文件名
<parameter name="TEMPLATE_FILE" isForPrompting="false" class="java.lang.String"/>
<template><![CDATA[$P{TEMPLATE_FILE}]]></template>
其中$ P {TEMPLATE_FILE}是样式资源的完整路径
答案 2 :(得分:5)
我喜欢分享我在Jasper报告中使用样式的知识,我认为这对于像我这样的报告设计师来说非常有用,来自Bilal Siddiqui的一本名为JasperReport Development的书。我喜欢这本书,并以各种方式发现展示风格,如:
创建可重复使用的样式
只需在创建新报告时选择“样式”,然后为文本,线条和矩形定义样式。样式文件将存储为.jrtx文件。
在报告中导入可重复使用的样式
在报表中导入样式时,有三个信息块。
步骤1。样式模板的名称和位置
<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>
第二步。每次使用样式模板将样式应用于报表元素时,都会创建<reportElement>
标记,如下所示:
//style applied to a rectangle
<rectangle radius="10">
<reportElement style="BigBoldRed" mode="Transparent" x="0" y="0" width="555" height="44"/>
</rectangle>
//style applied to a the text field
<staticText>
<reportElement style="BigBoldRed" x="0" y="0" width="555" height="66"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Monthly Customer Invoices]]></text>
</staticText>
<li>
),并且您希望HTML标记在报表设计中起作用:"<li>"+"Invoice # "+$F{InvoiceID}+", "+
$ F {CustomerName} +“已购买 “+ $ F {ProductName} +”in “+ $ F {InvoicePeriod} +”(发票金额: \ $“+ $ F {InvoiceValue} +”)“+”
解决方案很简单,只需将文本字段的“标记”属性设置为“样式”即可。
我已获得作者的许可,可以在这篇文章中从他的JasperReports食谱中复制代码块。