Tech Talk: Sử dụng JasperReport, Jasper Studio để thiết kế template xuất Excel + Pdf

Sáng nay (12/09), anh Nguyễn Văn Chung đã mở đầu Tech Talk Tháng 9 với chủ đề: “Sử Dụng JasperReports, Jasper Studio Để Thiết Kế Template Xuất Excel + Pdf”. Buổi Tech Talk được diễn ra tại phòng Takoyaki, với sự tham gia đông đảo của các thành viên đại gia đình Ominext. 

Bài viết dưới đây tổng hợp lại kiến thức bổ ích xoay quanh JasperReports mà anh Nguyễn Văn Chung đã chia sẻ trong buổi Tech Talk.

JasperReport là một engine tạo báo cáo mã nguồn mở phổ biến nhất hiện tại. Nó được viết hoàn toàn bằng Java và được cho phép sử dụng với nhiều loại nguồn dữ liệu (data source) và tạo ra những báo cáo chuẩn chỉnh cho phép hiển thị, in ấn hoặc xuất ra những định dạng như HTML, PDF, MS Excel, OpenOffice và MS Word. 
Hãy cùng Ominext tìm hiểu những thông tin cơ bản xoay quanh JasperReports trong bài viết dưới đây, để có thể áp dụng và tạo được báo cáo một cách đơn giản, nhanh chóng, giúp tiết kiệm được công sức và thời gian.

JasperReports là gì?

JasperReports là một trong những bộ thư viện mã nguồn mở của Java được sử dụng phổ biến trong việc tạo ra các file báo cáo với nhiều định dạng khác nhau (.pdf, .csv, .html,..), hỗ trợ các nhà phát triển với nhiệm vụ bổ sung khả năng báo cáo cho Java Application. JasperReports cung cấp khả năng tạo báo cáo cho bất kỳ các ứng dụng Java Application, được nhúng vào ứng dụng Java thông qua thư viện trong CLASSPATH của ứng dụng.

JasperReports sở hữu những tính năng nào?

JasperReports sở hữu các tính năng đa dạng, cho phép lập trình viên trình bày dữ liệu báo cáo dưới dạng văn bản hoặc đồ họa, cung cấp dữ liệu theo nhiều cách như Parameters, datasources. Không chỉ vậy, JasperReports có thể chấp nhận dữ liệu từ nhiều nguồn dữ liệu và tạo Subreports, watermarks, charts và cung cấp khả năng xuất báo cáo theo nhiều định dạng khác nhau.

Quy trình xử lý của JasperReports được diễn ra như thế nào?

Hình 1 – Quy trình xử lý của JasperReports

Các thành phần của JapserReports

JasperReports bao gồm các mục:

  • Title: Chứa tiêu đề của báo cáo, chỉ xuất hiện một lần ở phần đầu báo cáo.
  • pageHeader: Phần tiêu đề trang xuất hiện ở đầu mỗi trang.
  • columnHeader: Column header liệt kê tên của các trường cụ thể mà bạn muốn hiển thị trong báo cáo.
  • detail: Phần hiển thị dữ liệu được đọc bời nguồn dữ liệu.
  • background: Được sử dụng để xác định nền trang cho tất cả các trang. Nó có thể được sử dụng để hiển thị ảnh, văn bản hoặc watermarks.
  • columnFooter: Xuất hiện ở cuối mỗi cột.
  • pageFooter: Page footer xuất hiện ở cuối mỗi trang, có thể là chứa thông tin về số lượng trang, ví dụ : “1/20”.
  • lastPageFooter: LastPageFooter xuất hiện ở trang cuối cùng của báo cáo.
  • summary: Cho phép chèn các trường liên quan đến tính toán hoặc bất kì thứ gì muốn chèn ở cuối báo cáo. Có ý nghĩa là phần tổng kết cuối cùng của báo cáo.

Các elements tiêu biểu trong JasperReports:

  • <staticText>: Static text không phụ thuộc vào bất kỳ nguồn dữ liệu, biến, tham số hay biểu thức nào.

VD: <staticText>

<reportElement x=”719″ y=”33″ width=”100″ height=”30″ uuid=”7df43b77-d20e-4075-95e9-079749c5fd4f”/>

<text><![CDATA[Xin chào]]></text>

</staticText>

  • <textField>: Được sử dụng để hiển thị dữ liệu động trong báo cáo.

VD: <textField>

<reportElement x=”703″ y=”31″ width=”100″ height=”30″ uuid=”bbb513d3-43ff-4b96-8a66-a2d33967dfa9″/>

<textFieldExpression><![CDATA[“Xin chào”]]></textFieldExpression>

</textField>

  • <textFieldExpression>: Xác định dữ liệu được hiển thị trong textField.

VD: <textFieldExpression><![CDATA[“Xin chào”]]></textFieldExpression>

  • <field>: Phần tử này được sử dụng để ánh xạ dữ liệu.

VD: <field name=“exampleField” class=”java.lang.String”/>

  • <variable>: Biểu thức trong báo cáo, được sử dụng nhiều lần trong báo cáo. JRXML template có thể chứa không hoặc nhiều <variable>.

VD: <variable name=”sum_area” class=”java.lang.Float” resetType=”Group” resetGroup=”area” calculation=”Sum”>

<variableExpression><![CDATA[$F{area}]]></variableExpression>

</variable>

  • <parameter>: Phần tử xác định tham số báo cáo. Được cung cấp qua java.util.Map. JRXML template có thể chứa không hoặc nhiều <parameter>.

VD: <parameter name=“exampleParameter” class=”java.lang.Integer”/>

  • <group>: Phần tử được sử dụng để nhóm các bản ghi liên tiếp trong cùng 1 nguồn dữ liệu. JRXML template có thể chứa không hoặc nhiều <group>.

VD: <group name=”group”>

<groupExpression><![CDATA[$F{group_name}]]></groupExpression>

</group>

Report Data Source:

– Datasources là vùng dữ liệu có cấu trúc. Trong khi tạo báo cáo, công cụ JasperReports lấy dữ liệu từ các nguồn dữ liệu.

– Triển khai nguồn dữ liệu:

(Bảng tóm tắt các nguồn dữ liệu và các lớp thực hiện)

Subreport:

Subreport là một trong những tính năng tuyệt vời của JasperReport. Tính năng này cho phép kết hợp báo cáo trong 1 báo cáo khác.

– Các phần tử con trong <subreport> JRXML:

  • <reportElement>:
  • <parametersMapExpression> : Được sử dụng để truyền một map các parametes cho subreport
  • <subreportParameter> : Được sử dụng để truyền các tham số cho subreport
  • <connectionExpression> : Được sử dụng để truyền một java.sql.Connection cho subreport
  • <dataSourceExpression> : Được sử dụng để truyền nguồn dữ liệu cho subreport
  • <returnValue> : Được sử dụng để gán giá trị của một trong các biến của subreport cho một trong các biến của báo cáo chính
  • <subreportExpression> : Cho biết nơi tìm kiếm mẫu báo cáo được biên dịch cho subreport

Font:

– Một báo cáo chứa các phần tử văn bản và mỗi phần tử này có thể cài đặt phông chữ riêng. Các cài đặt này có thể được chỉ định bằng cách sử dụng thẻ <font> có sẵn trong thẻ <textElement>

– Các thuộc tính chính của <font>

  • fontName: Tên phông chữ
  • size: Kích thước phông chữ, mặc định là 10
  • isBold: Cờ chỉ định phông chữ đậm, mặc định là false
  • isItalic: Cờ chỉ định phông chữ nghiêng, mặc định là false
  • isUnderline: Cờ chỉ định phông chữ gạch chân, mặc định là false
  • isStrikeThrough: Cờ chỉ định phông chữ gạch ngang, mặc định là false
  • pdfFontName: Tên phông chữ PDF tương ứng được yêu cầu bởi thư viện iText khi xuất định dạng PDF
  • pdfEncoding: Mã hóa ký tự PDF tương đương
  • isPdfEmbedded: Cờ chỉ định phông chữ có nên được nhúng vào tài liệu hay không, mặc định là false

Report Style

– JasperReports có tính năng <style> giúp kiểm soát các thuộc tính văn bản trong mẫu báo cáo như: màu nền, phông chữ in đậm, in nghiêng, cỡ chữ, đường viền .v.v.

– Một số thuộc tính chính:

  • name: Bắt buộc,là duy nhất
  • isDefault: Cho biết kiểu này có phải là mặc định của tài liệu hay không
  • style: Tham chiếu đến style gốc
  • mode: Giá trị có thể là Opaque và Transparent
  • forecolor: Chỉ định màu foreground
  • backcolor: Chỉ định màu background
  • radius: Chỉ định bo tròn góc hình chữ nhật
  • hAlign: Chỉ định căn ngang: Trái, giữa, phải và căn đều
  • vAlign: Chỉ định căn dọc: Trên cùng, giữa và dưới

Cấu hình với Maven:

<dependency>

<groupId>net.sf.jasperreports</groupId>

<artifactId>jasperreports</artifactId>

<version>6.6.0</version>

</dependency>

Jaspersoft Studio

Hi vọng, từ bài chia sẻ, các bạn sẽ có được những kiến thức cho riêng mình và có thể tự tìm hiểu sâu hơn về JasperReports.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *