JasperReports中的外部样式

Jam*_*ove 23 styles jasper-reports

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

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

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

Jam*_*ove 29

使用JasperReport模板.JasperReports模板是一个结尾的模板.jrtx,可能看起来类似于this(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>
Run Code Online (Sandbox Code Playgroud)

然后在您的.jrxml文件中,将其包含为模板:

...
<template>"styles.jrtx"</template>
...
Run Code Online (Sandbox Code Playgroud)

iReport也理解这一点,所以你的样式被导入并正确地显示在iReport中(虽然我确实注意到有时它不会重新加载或重新编译是必要的).


小智 9

您还可以<template>通过使用在运行时传递到报表中的参数来避免在元素中指定实际文件名

<parameter name="TEMPLATE_FILE" isForPrompting="false" class="java.lang.String"/>

<template><![CDATA[$P{TEMPLATE_FILE}]]></template>

其中$ P {TEMPLATE_FILE}是样式资源的完整路径


小智 5

我想分享我在Jasper报表中使用样式的学习,我认为这对像我这样的报表设计者来说非常有用,它来自Bilal Siddiqui的一本名为《 JasperReport Development Cookbook》的书。我喜欢这本书,并发现了各种展示风格的作品,例如:

  • 创建可重复使用的样式
    创建新报告时只需选择“样式”,然后为文本,线条和矩形定义样式。样式文件将存储为.jrtx文件。

  • 在报表中导入可重复使用的样式在报表
    中导入样式时,需要三部分信息。步骤1。样式模板的名称和位置

<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>
Run Code Online (Sandbox Code Playgroud)

第2步。每次使用样式模板将样式应用于报表元素时,<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>
Run Code Online (Sandbox Code Playgroud)
  • 在报表中混合内部样式和可重用样式
  • 使用HTML的功能来设计报表样式
    例如,您的文本字段具有以下表达式,其中包括HTML标记(例如<li>),并且您希望HTML标记在报表设计中起作用:
"<li>"+"Invoice # "+$F{InvoiceID}+", "+
Run Code Online (Sandbox Code Playgroud)

$ F {CustomerName} +“在“ + $ F {InvoicePeriod} +”中购买了“ + $ F {ProductName} +”(发票值:\ $” + $ F {InvoiceValue} +“)” +“

解决方法很简单,只需将文本字段的“ Markup”属性设置为“ Styled”即可。

我已经在本文中征得了作者的许可,以从其JasperReports食谱中复制代码块。