JasperReports中的外部样式

时间:2008-10-13 03:53:46

标签: jasper-reports styles

我正在开发一个系统,其中包含使用JasperReports生成的大量报告。其中一个较新的功能是您可以为报告定义样式。

从可用的文档中我相信有一些方法可以使用定义样式的外部文件,您可以在jasper报告中引用它。这允许多个报告使用单一样式。

我找不到关于这是否是实际功能的具体信息,如果是,如何使用它。有谁知道是否有可能为jasper报告提供外部样式,如果有,那该怎么办?

3 个答案:

答案 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>
  • 在报告中混合内部和可重复使用的样式
  • 利用HTML的力量为报告设置样式
    例如,您的文本字段包含以下表达式,其中包含HTML标记(即<li>),并且您希望HTML标记在报表设计中起作用:
"<li>"+"Invoice # "+$F{InvoiceID}+", "+
     

$ F {CustomerName} +“已购买   “+ $ F {ProductName} +”in   “+ $ F {InvoicePeriod} +”(发票金额:   \ $“+ $ F {InvoiceValue} +”)“+”

解决方案很简单,只需将文本字段的“标记”属性设置为“样式”即可。

我已获得作者的许可,可以在这篇文章中从他的JasperReports食谱中复制代码块。