JasperReports - Kiểu dáng
Các mẫu JRXML (hoặc tệp JRXML) trong JasperReport là các tệp XML chuẩn, có phần mở rộng là .jrxml. Tất cả các tệp JRXML đều chứa thẻ <jasperReport>, là phần tử gốc. Đến lượt nó lại chứa nhiều phần tử con (tất cả đều là tùy chọn). Khung công tác JasperReport có thể xử lý các loại nguồn dữ liệu khác nhau. Trong hướng dẫn này, chúng tôi sẽ chỉ ra cách tạo một báo cáo cơ bản, chỉ bằng cách chuyển một tập hợp các đối tượng dữ liệu Java (sử dụng các bean Java), tới JasperReport Engine. Báo cáo cuối cùng sẽ hiển thị một danh sách những người với các hạng mục bao gồm tên và quốc gia của họ.
Các bước sau được đề cập trong chương này để mô tả - cách thiết kế một JasperReport -
- Tạo Mẫu Báo cáo JRXML và.
- Xem trước Mẫu Báo cáo XML.
Tạo mẫu báo cáo JRXML
Tạo tệp JRXML, là jasper_report_template.jrxmlsử dụng trình soạn thảo văn bản và lưu tệp này trong C: \ tools \ jasperreports-5.0.1 \ test theo thiết lập môi trường của chúng tôi.
<?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>
Dưới đây là chi tiết về các trường chính trong mẫu báo cáo ở trên -
<queryString> - Cái này trống (vì chúng ta đang truyền dữ liệu qua Java Beans). Thường chứa câu lệnh SQL, truy xuất kết quả báo cáo.
<tên trường> - Phần tử này được sử dụng để ánh xạ dữ liệu từ các nguồn dữ liệu hoặc truy vấn, thành các mẫu báo cáo. name được sử dụng lại trong nội dung báo cáo và có phân biệt chữ hoa chữ thường.
<fieldDescription> - Phần tử này ánh xạ tên trường với phần tử thích hợp trong tệp XML.
<staticText> - Điều này xác định văn bản tĩnh không phụ thuộc vào bất kỳ nguồn dữ liệu, biến, tham số hoặc biểu thức báo cáo nào.
<textFieldExpression> - Điều này xác định sự xuất hiện của trường kết quả.
$ F {country} - Đây là một biến chứa giá trị của kết quả, trường được xác định trước trong thẻ <tên trường>.
<band> - Các dải chứa dữ liệu, được hiển thị trong báo cáo.
Khi thiết kế báo cáo đã sẵn sàng, hãy lưu nó vào thư mục C: \.
Xem trước Mẫu Báo cáo XML
Có một tiện ích net.sf.jasperreports.view.JasperDesignViewer có sẵn trong tệp JasperReports JAR, giúp xem trước thiết kế báo cáo mà không cần phải biên dịch hoặc điền vào nó. Tiện ích này là một ứng dụng Java độc lập, do đó có thể được thực thi bằng ANT.
Hãy viết một mục tiêu ANT viewDesignXMLđể xem JRXML. Vì vậy, hãy tạo và lưubuild.xmltrong thư mục C: \ tools \ jasperreports-5.0.1 \ test (nên được đặt trong cùng thư mục nơi đặt JRXML). Đây là tệp 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>
Tiếp theo, chúng ta hãy mở một dấu nhắc lệnh và đi đến thư mục nơi build.xml được đặt. Thực hiện lệnhant(Vì viewDesignXML là mục tiêu mặc định). Đầu ra như sau:
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.
Cảnh báo Log4j có thể bị bỏ qua và kết quả của việc thực thi ở trên, một cửa sổ có nhãn "JasperDesignViewer" sẽ mở ra, hiển thị bản xem trước mẫu báo cáo của chúng tôi.
Như chúng ta thấy, chỉ các biểu thức báo cáo để lấy dữ liệu được hiển thị, vì JasperDesignViewer không có quyền truy cập vào nguồn dữ liệu thực tế hoặc các tham số báo cáo. Kết thúc JasperDesignViewer bằng cách đóng cửa sổ hoặc nhấn Ctrl-c trong cửa sổ dòng lệnh.