JasperReports - Designs

Szablony JRXML (lub pliki JRXML) w JasperReport to standardowe pliki XML z rozszerzeniem .jrxml. Wszystkie pliki JRXML zawierają znacznik <jasperReport> jako element główny. To z kolei zawiera wiele elementów podrzędnych (wszystkie są opcjonalne). Framework JasperReport może obsługiwać różne rodzaje źródeł danych. W tym samouczku pokażemy, jak wygenerować podstawowy raport, po prostu przekazując zbiór obiektów danych Java (przy użyciu ziaren Java) do JasperReport Engine. Raport końcowy będzie zawierał listę osób wraz z kategoriami, w tym ich nazwiskami i krajami.

W tym rozdziale omówiono następujące kroki, aby opisać - jak zaprojektować JasperReport -

  • Tworzenie szablonu raportu JRXML i.
  • Podgląd szablonu raportu XML.

Tworzenie szablonu raportu JRXML

Utwórz plik JRXML, którym jest jasper_report_template.jrxmlużywając edytora tekstu i zapisz ten plik w C: \ tools \ jasperreports-5.0.1 \ test zgodnie z naszą konfiguracją środowiska.

<?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 = "jasper_report_template" language = "groovy" pageWidth = "595"
   pageHeight = "842" columnWidth = "555" leftMargin = "20" rightMargin = "20"
   topMargin = "20" bottomMargin = "20">
  
   <queryString>
      <![CDATA[]]>
   </queryString>
   
   <field name = "country" class = "java.lang.String">
      <fieldDescription><![CDATA[country]]></fieldDescription>
   </field>
	
   <field name = "name" class = "java.lang.String">
      <fieldDescription><![CDATA[name]]></fieldDescription>
   </field>
	
   <columnHeader>
      <band height = "23">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "3" width = "535" 
               height = "15" backcolor = "#70A9A9" />
            
            <box>
               <bottomPen lineWidth = "1.0" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
            <text><![CDATA[]]> </text>
         </staticText>
			
         <staticText>
            <reportElement x = "414" y = "3" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            
            <text><![CDATA[Country]]></text>
         </staticText>
         
         <staticText>
            <reportElement x = "0" y = "3" width = "136" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            
            <text><![CDATA[Name]]></text>
         </staticText>
  
      </band>
   </columnHeader>
 
    <detail>
      <band height = "16">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "0" width = "535" 
               height = "14" backcolor = "#E5ECF9" />
            
            <box>
               <bottomPen lineWidth = "0.25" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
            <text><![CDATA[]]> </text>
         </staticText>
			
         <textField>
            <reportElement x = "414" y = "0" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font size = "9" />
            </textElement>
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{country}]]>
            </textFieldExpression>
         </textField>
         
         <textField>
            <reportElement x = "0" y = "0" width = "136" height = "15" />
            <textElement textAlignment = "Center" verticalAlignment = "Middle" />
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{name}]]>
            </textFieldExpression>
         </textField>

      </band>
   </detail>
	
</jasperReport>

Oto szczegóły głównych pól w powyższym szablonie raportu -

  • <queryString> - to jest puste (ponieważ przekazujemy dane przez Java Beans). Zwykle zawiera instrukcję SQL, która pobiera wynik raportu.

  • <nazwa pola> - ten element służy do mapowania danych ze źródeł danych lub zapytań na szablony raportów. name jest ponownie używany w treści raportu i rozróżniana jest wielkość liter.

  • <fieldDescription> - ten element odwzorowuje nazwę pola na odpowiedni element w pliku XML.

  • <staticText> - definiuje tekst statyczny, który nie zależy od żadnych źródeł danych, zmiennych, parametrów ani wyrażeń raportu.

  • <textFieldExpression> - określa wygląd pola wynikowego.

  • $ F {country} - jest to zmienna zawierająca wartość wyniku, predefiniowane pole w tagu <nazwa pola>.

  • <band> - Wstęgi zawierają dane, które są wyświetlane w raporcie.

Gdy projekt raportu będzie gotowy, zapisz go w katalogu C: \.

Podgląd szablonu raportu XML

W pliku JAR JasperReports jest dostępne narzędzie net.sf.jasperreports.view.JasperDesignViewer , które pomaga w wyświetlaniu podglądu projektu raportu bez konieczności jego kompilacji lub wypełniania. To narzędzie jest samodzielną aplikacją Java, dlatego można je uruchomić za pomocą ANT.

Napiszmy cel ANT viewDesignXMLaby wyświetlić JRXML. Stwórzmy więc i zapiszmybuild.xmlw katalogu C: \ tools \ jasperreports-5.0.1 \ test (powinien być umieszczony w tym samym katalogu, w którym znajduje się JRXML). Oto plik build.xml -

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewDesignXML" basedir = ".">

   <import file = "baseBuild.xml" />
   <target name = "viewDesignXML" description = "Design viewer is 
      launched to preview the JXML report design.">
      
      <java classname = "net.sf.jasperreports.view.JasperDesignViewer" fork = "true">
         <arg value = "-XML" />
         <arg value = "-F${file.name}.jrxml" />
         <classpath refid = "classpath" />
      </java>
   </target>

</project>

Następnie otwórzmy wiersz poleceń i przejdźmy do katalogu, w którym znajduje się plik build.xml. Wykonaj polecenieant(Ponieważ viewDesignXML jest domyślnym celem). Wynik jest następujący -

C:\tools\jasperreports-5.0.1\test>ant
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

viewDesignXML:
[java] log4j:WARN No appenders could be found for logger
(net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
[java] log4j:WARN Please initialize the log4j system properly.

Ostrzeżenie Log4j można zignorować, a w wyniku powyższego wykonania otworzy się okno z etykietą „JasperDesignViewer”, wyświetlające podgląd naszego szablonu raportu.

Jak widzimy, wyświetlane są tylko wyrażenia raportu służące do uzyskiwania danych, ponieważ JasperDesignViewer nie ma dostępu do rzeczywistego źródła danych ani parametrów raportu. Zakończ JasperDesignViewer, zamykając okno lub naciskając Ctrl-c w oknie wiersza poleceń.