Thực hiện báo biểu với iReport và JasperReport trong Java

ngày 19-02-2016

Trong môi trường làm việc năng động và hiện đại ngày nay, hầu hết các tổ chức, cơ quan, đơn vị… đều thực hiện tin học hóa bằng cách sử dụng các phần mềm, website để giải quyết các công việc của mình. Việc tin học hóa đã giúp tiết kiệm thời gian, chi phí và không gian làm việc cho rất nhiều người. Các sản phẩm phần mềm được làm ra không chỉ giúp khách hàng thực hiện công việc trực tiếp trên các form, page mà còn giúp khách hàng thực hiện nhanh các mẫu báo biểu để báo cáo khi cần.

Dựa trên nhu cầu thực tế là trong các sản phẩm phần mềm thường có báo biểu, chúng tôi gửi đến các bạn bài viết này để giúp các bạn đang lập trình bằng ngôn ngữ Java, một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, có thể dễ dàng thực hiện các báo biểu.

Trong một báo biểu thường có các thành phần sau:

  • Page Header: Là phần đầu tiên trong báo biểu, thường chứa tiêu đề của báo biểu (có thể tùy chọn)
  • Details: Chứa nội dung chính của báo biểu (gồm report group header chứa thông tin nhóm, column header chứa tên các cột sẽ hiển thị trong báo biểu, report detail chứa nội dung các cột, report group footer chứa thông tin thống kê theo nhóm)
  • Page Footer: Là phần cuối trong báo biểu, thường chứa thông tin thời gian lập/in báo biểu, số trang của báo biểu (có thể tùy chọn)

Chúng ta có thể thực hiện một báo biểu từ một Empty Report, với loại này thì ta sẽ thiết kế tất cả các nội dung trên báo biểu. Nếu chọn cách này thì ta sẽ mất khá nhiều thời gian để thiết kế phần hiển thị. Có một cách khác là chọn thực hiện báo biểu với Report Wizard, với loại này thì ta sẽ chọn một trong các mẫu được cung cấp sẵn, sau đó nếu cần thêm gì thì có thể bổ sung vào sau giúp tiết kiệm thời gian.
Để chuẩn bị cho việc xây dựng báo biểu ta cần:

  • Cài đặt JDK 8, NetBeans 8.0.x (là editor để làm việc với ngôn ngữ lập trình Java)
  • Cài đặt MySQL 5.6.x (là hệ quản trị CSDL, nơi lưu trữ CSDL làm nguồn để thực hiện báo biểu)
  • Download và giải nén iReport 5.5.x và JasperReport 6.2.x (là các thư viện phục vụ cho việc thực hiện báo biểu)

Bước 1: Cài iReport

  • Chạy NetBeans
  • Vào menu Tools > Plugins > Downloads > chọn Add Plugin > tìm đến thư mục iReport đã giải nén và chọn toàn bộ các tập tin .nbm > nhấn Open


  • Đóng và khởi động lại NetBeans.

Bước 2: Khởi động MySQL, cài đặt CSDL làm nguồn cho báo biểu. Ví dụ: CSDL phan_cong_nhan_vien_1_1_nam

Bước 3: Tạo project làm việc trong NetBeans và đưa JasperReport vào Libraries của project

  • Tạo một Project mới
  • Trong thư mục Libraries của project: click phải > chọn Add JAR/Folder… > tìm đến thư mục JasperReport đã giải nén và chọn toàn bộ các tập tin .jar > chọn “Copy to Libraries Folder” của project > nhấn Open



Bước 4: Tạo report bằng Report Wizard

  • Trong project đã tạo ra ở bước 3, vào thư mục Source Pakages > tạo package mới hoặc sử dụng luôn package mặc định
  • Trong package này > click phải chọn New > Others > Report > chọn Report Wizard


  • Chọn mẫu report > nhấn Next
  • Đặt tên và chọn vị trí lưu trữ > Nhấn Next


  • Tạo nguồn dữ liệu cho báo biểu:
    • Trong Connections/ DataSources chọn New (Lưu ý: chỉ chọn New trong trường hợp chưa có nguồn dữ liệu cần cho báo biểu, còn nếu đã có thì chọn luôn Connection/DataSource để làm việc mà không cần tạo mới nữa.)
    • Xuất hiện màn hình DataSource > chọn Database JDBC connection > nhấn Next

 

  • Chọn và điền các thông tin cần thiết cho việc kết nối đến CSDL (JDBC Driver, JDBC URL, Username, Password) > Nhấn Test để kiểm tra kết quả kết nối > Nhấn “Save”.

 

  • Chọn Connection/ DataSource vừa kết nối. Viết câu lệnh truy vấn làm dữ liệu nguồn cho báo biểu > Nhấn Next (Lưu ý: cần chuẩn bị câu lệnh truy vấn và có thể test trước ở MySQL để đảm bảo kết quả chính xác)

 

  • Chọn các cột dữ liệu cần thiết để đưa vào báo biểu > Nhấn Next

  • Chọn Group cho báo biểu (để đưa dữ liệu vào các nhóm) > Nhấn Next

  • Nhấn Finish để hoàn thành

  • Ở tab Designer: chúng ta thấy các nội dung được chọn đã tự động hiển thị, chỉ cần chỉnh lại tiêu đề cho báo biểu và sắp xếp lại các vị trí (nếu cần)

  • Chọn tab Review để xem kết quả

Bước 5: Tạo báo biểu có thêm các tổng kết theo nhóm, bổ sung thêm cột mới bằng cách khai báo biến

  • Ở thẻ Report > Variables > New variable > Đặt tên biến > Thiết lập các thông số thích hợp cho biến ở Properties
    • Ví dụ: Khai báo biến COUNT_NV: Đếm số Nhân viên trong từng đơn vị

  • Ví dụ: Khai báo biến MUC_LUONG_TB: tính lương trung bình của từng đơn vị

  • Ví dụ: Khai báo biến SoThuTu: đánh số thứ tự cho các dòng trong từng nhóm…

Bước 6: Định dạng lại báo biểu

  • Định dạng lại cột hiển thị: bằng cách chọn trường trên báo biểu > click phải chọn “Field Pattern” > hiển thị màn hình Category > chọn mẫu thích hợp > nhấn Apply (Ví dụ: field $F{Ngay_sinh} theo định dạng Date (dd/MM/yyyy), field $F{Muc_luong} theo định dạng Currency (#,##0)…)

  • Kéo thả các biến đã khai báo ở Bước 5 vào báo biểu và định dạng


  • Chọn tab Review để xem kết quả


  • Xuất báo biểu ra file: chọn biểu tượng “Save” > Chọn định dạng tập tin (Excel, PDF, HTML…) > Nhập tên tập tin > nhấn OK



Bước 7: Xuất báo biểu khi nhấn button trên Form (xuất báo biểu trực tiếp trên ứng dụng khi cần)


  • Tạo Form
  • Thiết kế Form trong đó có button (nhấn vào thì xuất hiện báo biểu)
  • Viết code cho button này

private void btnThongKeActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/phan_cong_nhan_vien_1_1_nam?useUnicode=true&characterEncoding=utf8", "root", "123456");

JasperDesign jd = JRXmlLoader.load("H:\\Java_Project\\06012016Report\\src\\pkg06012016report\\report1.jrxml");
JasperReport jr = JasperCompileManager.compileReport("H:\\Java_Project\\06012016Report\\src\\pkg06012016report\\report1.jrxml");
JasperPrint jp = JasperFillManager.fillReport(jr, new HashMap(), con);
JasperViewer.viewReport(jp);
JasperExportManager.exportReportToPdfFile(
jp, "H:\\Java_Project\\06012016Report\\src\\pkg06012016report\\report1.pdf");
} catch (ClassNotFoundException | SQLException | JRException e) {
JOptionPane.showMessageDialog(null, "Cannot show report" + e.getMessage());
}
}

(Lưu ý: khi được editor cảnh báo, cần phải add thêm các thư viện hỗ trợ cho đoạn code trên nếu project chưa có các thư viện này:



)


  • Chạy và xem kết quả báo biểu


  • Lưu báo biểu theo định dạng tùy chọn



Mong là với những hướng dẫn chi tiết trên, các bạn có thể tạo ra những báo biểu cho ứng dụng của mình.

Các bạn thân mến, đây là bài viết nằm trong loạt bài hỗ trợ thêm các bạn học viên những nội dung và kiến thức thực tế cần trang bị khi đi làm. Và lưu ý là bài viết này chỉ tập trung hướng dẫn các bạn cách tạo báo biểu, còn những kiến thức khác như hệ QT CSDL MySQL, cách viết truy vấn, sử dụng ngôn ngữ lập trình Java, các kiến thức nâng cao khác của báo biểu… các bạn cần trau dồi thêm để có một hành trang đầy đủ, vững vàng và tự tin khi làm việc.


Chúc các bạn thành công!


Trung tâm Tin học - Trường Đại học KHTN

ai
Trung Tâm Tin Học
ai
Trung Tâm Tin Học
Chào mừng bạn đến với Trung Tâm Tin Học.
Bạn đang cần hỗ trợ thông tin gì ạ? Hãy Chat ngay với chúng tôi nhé.