Domanda

Sto lavorando su un sistema che include un gran numero di report, generati utilizzando JasperReports.Una delle funzionalità più recenti è la possibilità di definire stili per i report.

Dai documenti disponibili credo che ci sia un modo per avere un file esterno che definisce gli stili da utilizzare e puoi farne riferimento nei tuoi rapporti Jasper.Ciò consente l'utilizzo di un singolo stile da più report.

Non riesco a trovare alcuna informazione concreta sul fatto che questa sia una funzionalità effettiva e, in caso affermativo, come utilizzarla.Qualcuno sa se è possibile avere stili esterni per i report Jasper e, in tal caso, come farlo?

È stato utile?

Soluzione

Usa modelli JasperReport . Un modello JasperReports termina in .jrtx e può essere simile a questo (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>

e quindi nel tuo .jrxml file, includilo come modello:

...
<template>"styles.jrtx"</template>
...

Anche iReport lo capisce, quindi i tuoi stili vengono importati e mostrati correttamente in iReport (anche se a volte ho notato che non li avrebbe prelevati e che sarebbe stato necessario ricaricarli o ricompilarli).

Altri suggerimenti

Puoi anche evitare di specificare il nome del file effettivo nell'elemento <template> utilizzando un parametro passato nel tuo report in fase di esecuzione

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

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

dove $ P {TEMPLATE_FILE} è il percorso completo della risorsa di stile

Mi piace condividere ciò che ho imparato sull'uso degli stili nei report Jasper, cosa che ritengo molto utile per i progettisti di report come me, da un libro intitolato JasperReport Development cookbook di Bilal Siddiqui.Mi piace questo libro e ho trovato esempi di stili in vari modi, come:

  • Creare uno stile riutilizzabile
    Seleziona semplicemente "Stile" durante la creazione di un nuovo report e definisci lo stile per testo, linea e rettangoli.Il file di stile verrà archiviato come file .jrtx.

  • Importa lo stile riutilizzabile nel tuo report
    Sono presenti tre blocchi di informazioni durante l'importazione degli stili nel report.Passo 1.Nome e posizione del modello di stile

<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>

Passo 2.Ogni volta che applichi uno stile agli elementi del report utilizzando il modello di stile, a <reportElement> il tag viene creato come mostrato di seguito:

//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>
  • Combinazione degli stili interni e riutilizzabili nel report
  • Usa la potenza dell'HTML per dare stile al tuo report
    Ad esempio, il campo di testo ha la seguente espressione che include tag HTML (ad es. <li>) e desideri che i tag HTML funzionino nella progettazione del tuo report:
"<li>"+"Invoice # "+$F{InvoiceID}+", "+

$ F {CustomerName}+"Acquistato"+$ f {ProductName}+"in"+$ f {InvoicePeriod}+"(Valore delle fatture:\$ "+$F{ValoreFattura}+")"+"

La soluzione è semplice, basta impostare la proprietà "Markup" del campo di testo su "Stile" e basta.

Ho ottenuto il permesso dall'autore di copiare una parte di codice dal suo libro di cucina JasperReports in questo post.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top