Menu

JasperReport: Giới thiệu về JasperReport


JasperReport là một engine tạo báo cáo mã nguồn mở phổ biế 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 từng pixcel" 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ầu hết các ứng dụng trong thực tế cần phải xuất các báo cáo theo nghiệp vụ cũng như theo yêu cầu của khách hàng. Một công cụ tạo báo cáo đơn giản, mạnh mẽ sẽ giúp bạn tiết kiệm được nhiều công sức, thời gian. Vì lý do trên, mình quyết định làm một seri các bài giới thiệu và các tip của bản thân để giới thiệu đến các bạn.

Các thành phần

  • JDK phiên bản 1.3 trở lên. Vì JasperReport được viết hoàn toàn bằng Java nên cần phải cài đặt JDK thì mới sử dụng được thư viện này.
  • jasperreports-x.x.x.jar: đây là file thư viện được xây dựng sẵn (trong các ví dụ sau này mình sử dụng phiên bản jasperreports-6.3.1.jar).
  • iReport: công cụ để sinh ra các file template (bạn có thể tải về các bản phù hợp với hệ điều hành tại đây, hoặc tài bản cài đặt cho HĐH Windows tại địa chỉ).

Cài đặt

Việc cài đặt các thành phần trên đã rất đơn giản.
  • Cài đặt JDK, bạn tải bản JDK mới nhất về cài đặt vào máy.
  • jasperreport-x.x.x.jar đây là file thư viện, bạn chỉ cần copy vào project là được hoặc nếu build bằng Maven bạn có thể thêm dependency ở địa chỉ này.
  • Cài đặt iReport: tùy thuộc vào HĐH mà bạn cài đặt phiên bản phù hợp.

Tạo báo cáo đầu tiên

Trong hướng dẫn đầu tiên này, mình sẽ làm một ví dụ đơn giản và hướng dẫn các bạn sử dụng thư viện jasperreport-x.x.x.jar là chính. Ứng dụng iReport được sử dụng để tạo một mẫu báo cáo đơn giản chỉ chứa các label (static text), những thành phần phức tạp hơn sẽ được giới thiệu chi tiết trong các bài viết sau này.

Tạo project

Trong hướng dẫn này mình sử dụng IDE Eclipse và công cụ Maven để build ứng dụng và quản lý thư viện. Mình sẽ tạo project với tên là first-jasper-report (tạo project với maven trên eclipse tại đây).
Trong thư mục first-jasper-report/src/main, tạo thư mục resource/report-templates. Thư mục này sẽ chứa các mẫu báo cáo phục vụ cho việc sinh các báo cáo sau này.

Tạo mẫu báo cáo

Trước hết, ta sẽ đi tạo một mẫu báo cáo đơn giản bằng ứng dụng iReport. Sau khi cài đặt ứng dụng, bạn hãy mở ứng dụng lên và tạo một mẫu báo cáo mới. Việc tạo mới một mẫu báo cáo rất đơn giản, bạn chỉ cần chọn File >> New. Một cửa sổ hiện lên, bạn chọn mẫu báo cáo như trong hình dưới:
Nhấn vào "Open this Template" để chuyển sang bước tiếp theo như hình dưới:
Ở cửa số này, bạn nhập tên cho báo cáo và chọn thư mục lưu trữ. Cụ thể, mình sẽ lưu trữ mẫu báo cáo này vào thư mục resource/report-templates đã tạo ở bước trên trong project.
Nhấn Next để chuyển sang bước tiếp theo và Finish để kết thúc việc tạo mẫu báo cáo.
Lúc này, giao diện làm việc (editor) với mẫu báo cáo vừa tạo đã hiện ra cho phép bạn kéo và thả các component mong muốn vào mẫu báo cáo. Để đơn giản, mình kéo vào mẫu báo cáo 03 static text (label). Bạn có thể xem mẫu báo cáo mà mình đã tạo tại đây.

Biên dịch và xuất báo cáo

Tiếp theo, chúng ta sẽ tực hiện biên dịch mẫu báo cáo và thực báo cáo dạng pdf html. Trước tiên, bạn hay xem đoạn code sau đây:

Đoạn code trên thực hiện 03 công việc gồm: biên dịch mẫu báo cáo, truyền dữ liệu và xuất báo cáo. Mình sẽ đi giải thích chi tiết từng dòng code và nhiệm vụ của nó.

Biên dịch

Bạn sử dụng iReport để tạo ra file mẫu báo cáo *.jrxml và file này sẽ được biên dịch thành file *.jasper. Nếu có sẵn file *.jasper thì bạn sẽ không cần thực hiện bước biên dịch này nữa mà tải trực tiếp mẫu báo cáo từ file *.jasper.
Bạn hãy để ý dòng 24 và 25, mình tạo đối tượng JasperDesign từ file *.jrxml và biên dịch nó thành đối tượng JasperReport. Thực tế, đối tượng JasperReport cũng có thể được tạo từ file *.jasper (mình sẽ trình bày ở bài viết khác).

Truyền dữ liệu

Sau khi biên dịch thành công, bạn cần truyền dữ liệu vào để sinh báo cáo. Dữ liệu ở đây có thể từ nhiều nguồn khác nhau và nhiều loại khác nhau. Mình sẽ trình bày cụ thể từng loại.
Dòng 27 thực hiện truyền dữ liệu vào là một Map rỗng, vì mẫu báo cáo của mình là mẫu báo cáo đơn giản nên hiện tại bước này mình sẽ không đi chi tiết.

Xuất báo cáo

Dòng 29 và 31 được sử dụng để xuất báo cáo thành file pdf và html tương ứng. Đây là ví dụ đơn giản nên mình sử dụng tiện ích JasperExportManager để xuất báo cáo. Những ứng dụng nâng cao hơn hoặc xuất các loại dữ liệu đặc biệt thì mình sẽ trình bày ở bài sau.

Chạy ứng dụng

Mình sử dụng maven là công cụ thể build project ví dụ. Trước hết bạn cần Update Project để tài về các gói thư viện cần thiết.
Tiếp theo bạn đóng gói ứng đụng và chạy ứng dụng từ lớp App.
Bạn sẽ thấy 02 file báo cáo là first-report.pdffirst-report.html được tạo ra trong ổ D. Mở lần lượt các file này nên bạn sẽ thấy nội dung của báo cáo giống với nội dung trong mẫu báo cáo.

Kết luận

Đây là bài mở đầu cho series hướng dẫn sử dụng thư viện jasper để sinh báo cáo trong các ứng dụng Java. Bài hướng dẫn này khá đơn giản, chỉ hướng dẫn các bước rất đơn giản để tạo một báo cáo cũng rất đơn giản. Các kỹ thuật nâng cao sẽ được trình bày trong các bài viết tiếp theo.
Bạn có thể tải về mã nguồn tại đây.

Không có nhận xét nào:

Đăng nhận xét