Các khái niệm cơ bản trong JasperReport
NỘI DUNG BÀI VIẾT
JasperReport có một hệ thống kiến thức rất lớn và để tiếp cận được nhanh chóng chúng ta cần có một số hiểu biết các khái niệm, vấn đề cơ bản trong nó. Sau bài viết này bạn có thể hiểu được cơ bản các khái niệm cũng như cách thức hoạt động trong JasperReport.
1. Report là gì?
Report là các tài liệu, báo cáo bao gồm các thành phần hiển thị thông tin như tiêu đề báo cáo, các thông tin dạng biểu đồ, các thông tin chi tiết, bảng biểu, các thông tin tổng hợp. Một report dạng JasperReport bao gồm các thành phần cơ bản như sau (chúng ta sử dụng ví dụ về phiếu xuất hàng để hiểu rõ hơn khái niệm report trong JasperReport):

Trong báo cáo có nhiều các vùng khác nhau, các vùng này có thể sử dụng vào các mục đích khác nhau không phụ thuộc vào mục đích chính từng vùng.
- Title: là vùng chứa tiêu đề của báo cáo, nó hiển thị một lần duy nhất ở nơi bắt đầu của báo cáo. Trong phiếu xuất hàng thì nó là hàng chữ “PHIẾU XUẤT HÀNG”, ngoài ra nó có thể bao gồm các thông tin khác mà bạn muốn chỉ hiển thị một lần.
- Page Header: là vùng chứa thông tin về từng trang báo cáo như ngày giờ hoặc thông tin về công ty, tổ chức… Trong phiếu xuất kho bạn có thể muốn ở mỗi trang mới đều hiển thị thông tin cơ bản của đơn hàng như ngày xuất kho, người thực hiện…
- Column Header: là vùng chứa danh sách tên các trường bạn muốn hiển thị trong báo cáo. Trong phiếu xuất kho sẽ có một bảng danh sách các sản phẩm thì dòng trên cùng của bảng là tiêu đề của bảng, ví dụ như: Tên sản phẩm, Số lượng, Đơn giá, Thành tiền…
- Detail: là vùng chứa các thông tin chi tiết của báo cáo. Trong phiếu xuất kho thì nó chính là các dòng sản phẩm chi tiết trong danh sách sản phẩm.
- Column Footer: là vùng chứa các thông tin tổng hợp như tổng số bản ghi, tổng số tiền…
- Page Footer: là vùng chứa các thông tin ở cuối mỗi trang báo cáo, thường để thông tin về ngày giờ in báo cáo, đường dẫn đến báo cáo…
- Summary: là vùng chứa các thông tin được tổng kết từ phần Detail, thường đưa vào các biểu đồ để giúp cho việc so sánh số liệu trong phần Detail trực quan hơn.
Hầu hết các hệ thống báo cáo giống với JasperReport như Crystal Report, Microsoft Report… đều có cấu trúc các vùng như vậy, mục đích để khi duyệt qua một nguồn dữ liệu bằng vòng lặp, các dữ liệu được điền vào các vùng của báo cáo. Đặc biệt trong vùng detail, mỗi vòng lặp qua dữ liệu nó sẽ hiển thị vào vùng này.
2. JRXML là gì?
JasperReport định nghĩa các báo cáo trong một file XML và lưu lại các template này thành file với phần mở rộng là jrxml. Như vậy JRXML là JasperReport XML là ngôn ngữ dựa trên XML chuẩn để xây dựng các báo cáo trong JasperReport. Trong file jrxml sẽ có việc khai báo nguồn dữ liệu, các thành phần trong báo cáo như title, page header, column header, detail, column footer… cũng như các thông tin liên quan đến định dạng text như kích thước, font chữ, vị trí…
Tất cả các file jrxml đều chứa thẻ jasperreport là phần tử gốc (root element).
<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="Blank_A4_1" pagewidth="595" pageheight="842" columnwidth="555" leftmargin="20" rightmargin="20" topmargin="20" bottommargin="20" uuid="8c9db1b1-ec4c-41c6-82b3-6498f1ccc9d2">
<background>
<band splittype="Stretch"></band> </background>
<title><br /> <band height="79" splitType="Stretch"/><br /></title>
<pageheader>
<band height="35" splittype="Stretch"></band> </pageheader>
<columnheader>
<band height="61" splittype="Stretch"></band> </columnheader>
<detail>
<band height="125" splittype="Stretch"></band> </detail>
<columnfooter>
<band height="45" splittype="Stretch"></band> </columnfooter>
<pagefooter>
<band height="54" splittype="Stretch"></band> </pagefooter>
<summary>
<band height="42" splittype="Stretch"></band> </summary>
</jasperreport>
Code language: HTML, XML (xml)
Chúng ta xem qua nội dung file jrxml mẫu ở trên, đầu tiên là thẻ xml đánh dấu nội dung file là xml version 1.0 với mã hóa là UTF-8. Tiếp theo đó là thẻ jasperreport đánh dấu toàn bộ nội dung bên trong là nội dung report. Để ý bạn sẽ thấy một loạt các thẻ tương ứng với các vùng trong report đã được giới thiệu trong phần đầu bài viết như: <title>
, <pageHeader>
, <columnHeader>
, <detail>
, <columnFooter>
…
3. Thiết kế report trong JasperReport như thế nào?
Với ngôn ngữ JRXML ở trên bạn hoàn toàn có thể thiết kế được một report hoàn chỉnh trong JasperReport (tức là chỉ với Notepad chẳng hạn bạn cũng có thể code ra các báo cáo JasperReport), tuy nhiên để can chỉnh các đối tượng cho đẹp và bố trí các thành phần phù hợp chúng ta nên sử dụng các công cụ thiết kế báo cáo của JasperReport như iReport, JasperSoft Studio, Elipse… Với các phần mềm này chúng ta chỉ việc kéo thả các thành phần, lựa chọn các thuộc tính và phần mềm đã tự động xây dựng ra nội dung XML và được lưu thành template JRXML.
iReport là phần mềm thiết kế report có từ những ngày đầu khi JasperReport ra mắt, là một phần mềm giao diện đồ họa mã nguồn mở, hoàn toàn miễn phí. iReport có phiên bản cao nhất là v 5.6.0 ra mắt ngày 28/05/2014 và là phiên bản cuối cùng của iReport. Thay thế cho iReport là JasperSoft Studio, lý do là để tích hợp dễ dàng hơn vào môi trường phát triển IDE Eclipse.
Cộng đồng các nhà phát triển Java là rất lớn và họ sử dụng phần mềm phát triển chính là Eclipse do vậy, việc chuyển sang một phần mềm mới hỗ trợ tốt Eclipse sẽ giúp cho một lượng lớn các nhà phát triển Eclipse cảm thấy thuận tiện hơn.

Trong bài tiếp theo chúng ta sẽ tìm hiểu chi tiết về JasperSoft Studio công cụ thiết kế báo cáo trực quan.
Cảm ơn các bạn đã đọc.
Các bạn có thể tham khảo các bài viết hay về Laravel tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.
Nguồn tham khảo: Allaravel
Leave a Reply