Hướng dẫn lập trình báo cáo JasperReport cho người mới bắt đầu
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- Giới thiệu

Tài liệu được viết dựa trên:
  • Eclipse 4.4 (LUNA)

  • JasperSoft Studio (5.6.2)

2- Các cài đặt đòi hỏi

Jaspersoft Studio Plugin:

Để lập trình báo cáo Jasperreport bạn cần cài đặt Jaspersoft Studio vào Eclipse. Bạn có thể xem hướng dẫn tại:

Database LearningSQL

LearningSQL là một database nhỏ, dùng trong nhiều hướng dẫn của o7planning. Hướng dẫn lập trình báo cáo JasperReport cũng sử dụng dữ liệu trên Database này. Bạn cần tạo Database này (Chỉ mất 5 phút) theo hướng dẫn dưới đây:

Thư viện điều khiển cơ sở dữ liệu (Oracle, MySQL, SQLServer) và cách sử dụng:

Tùy thuộc vào bạn sử dụng Database gì, bạn cần thư viện điều khiển Database đó (Bạn cần 3 phút để hoàn thành), xem hướng dẫn download tại:

3- Giao diện báo cáo sẽ làm

Đây là hình ảnh dữ liệu thô:
Trên báo cáo chúng ta sẽ group nó lại để được một kết quả giống minh họa dưới đây:
Và đây là giao diện báo cáo:
SQL:
Select Acc.Open_Branch_Id
     ,Bra.Name           Branch_Name
     ,Acc.Cust_Id
     ,Cus.Address        Cust_Address
     ,Acc.Account_Id
     ,Acc.Product_Cd
     ,Acc.Avail_Balance
From   Account  Acc
     ,Customer Cus
     ,Branch   Bra
Where  Acc.Cust_Id = Cus.Cust_Id
And    Acc.Open_Branch_Id = Bra.Branch_Id

4- Tạo JasperReport Project

Mở khung nhìn (Perspective) Report Design.
Tiếp theo tạo Project HelloJasperReport:
  • File/New/Other..
Nhập vào tên Project:
  • HelloJasperReport
Project vừa được tạo ra:

5- Tạo Data Adaptor

Tại đây tôi kết nối tới database Oracle. Bạn có thể làm tương tự cho MySQL hoặc SQLServer, chỉ khác nhau thư viện sử dụng & URL Connection String. Trong trường hợp đó bạn có thể xem:
 
Với Oracle nhập vào:
  • JDBC Url: jdbc:oracle:thin:@localhost:1521:db11g
Lỗi xẩy ra khi bạn chưa khai báo đường dẫn thư viện điều khiển loại database này.
Chỉ cần Add vị trí file jar, thư viện điều khiển loại cơ sở dữ liệu đó.
OK, Data Adaptor đã được tạo ra.

6- Thiết kế báo cáo

6.1- Tạo mới báo cáo

  • File/New/Other...
Nhập vào tên báo cáo:
  • FirstJasperReport
Select Acc.Open_Branch_Id
      ,Bra.Name           Branch_Name
      ,Acc.Cust_Id
      ,Cus.Address        Cust_Address
      ,Acc.Account_Id
      ,Acc.Product_Cd
      ,Acc.Avail_Balance
From   Account  Acc
      ,Customer Cus
      ,Branch   Bra
Where  Acc.Cust_Id = Cus.Cust_Id
And    Acc.Open_Branch_Id = Bra.Branch_Id
Báo cáo được tạo ra.
View Outline rất quan trọng, trong khi thiết kế báo cáo chúng ta thường xuyên phải sử dụng tới nó.
Một trang báo cáo trắng đã được tạo ra. Trong đó các phần nội dung của Page Header, Column Header, Column Footer, Page Footer sẽ được hiển thị lặp lại ở các trang của báo cáo. Bạn có thể xóa các phần nội dung không cần thiết bằng cách nhấn phải chuột và chọn Delete.
Tại đây tôi đã xóa đi tất cả các phần chỉ giữ lại 2 phần Column Header & Detail, để dễ thiết kế, khi cần chúng ta sẽ tạo lại nó.

Column Header: Nơi để đặt tiêu đề các cột dữ liệu. Mặc định nó được lặp lại 1 lần tại tất cả các trang.
Detail: Nơi đặt các bản ghi, nó sẽ lặp theo số bản ghi từ câu truy vấn.
 

6.2- Thiết kế thô báo cáo

Kéo thả đối tượng Rectangle từ Pallete vào phần Column Header của báo cáo. Sau đó kéo Rectangle đầy theo chiều ngang.
Tiếp theo kéo chiều cao của phần Column Header cho bằng với chiều cao của Rectangle vừa tạo. Nhằm tránh các khoảng trắng không cần thiết của báo cáo.
Kết quả có được:
Thay đổi mầu nền của Rectangle:
Tiếp theo lần lượt chúng ta sẽ tạo ra 2 group:
  • Group Branch
  • Group Cust
Ý nghĩa của nó được mô tả bởi hình minh họa dưới đây:
Trên Outline nhấn phải chuột vào FirstJasperReport, chọn Create Group:
Tiếp theo chúng ta kéo một Rectangle từ Pallete vào vùng "Branch Group Header 1"
Thay đổi mầu nền cho Rectangle vừa tạo ra.
Tiếp theo chúng ta sẽ kéo thả lần lượt các Field Open_Branch_IdBranch_Name vào Rectangle trên khối "Branch Group Header 1".
Tương tự chúng ta kéo thả Branch_Name vào cạnh Open_Branch_Id.

Tạo tiếp Group Customer:

Customer Group đã được tạo ra, kéo thả đối tượng Rectangle vào "Customer Group Header 1". Căn chỉnh và thay đổi mầu nền cho Rectangle như hình minh họa dưới đây:
Kéo thả Field: Cust_ID vào Rectangle vừa tạo ra.
Tương tự kéo thả trường Cust_Address.
Tiếp theo, kéo thả lần lượt các trường Account_Id, Product_Cd, Avail_Balance vào vùng "Detail 1":

Chú ý: Nếu bạn kéo thả các trường (FIELD) vào vùng Detail, tiêu đề các cột cũng tự động được tạo ra trên vùng Column Header.

Căn chỉnh chiều cao của vùng "Detail 1" nhỏ nhất có thể:
Tiếp theo kéo thả các tiêu đề cột còn lại:
Kéo nhỏ chiều cao của 2 vùng:
  • Customer Group Footer 1
  • Branch Group Footer 1
Tiếp theo chúng ta kéo Field: AVAIL_BALANCE vào "Customer Group Footer 1" & "Branch Group Footer 1".
Đồng thời thay đổi mầu nền cho 2 đối tượng vừa kéo thả vào.

6.3- Chạy thử báo cáo lần 1

Chúng ta chạy thử báo cáo bằng cách nhấn sang TAB Preview:

6.4- Làm đẹp báo cáo

Lựa chọn các trường, và sét đặt các thuộc tính như hình minh họa dưới đây.

6.5- Chạy thử báo cáo lần 2

6.6- Thiết kế phần Header của báo cáo

Tạo một thư mục images trong project, copy file bank.png vào thư mục này như hình minh họa dưới đây:
  • bank.png
Kéo thả đối tượng Image từ Pallete vào Header của trang báo cáo.
Tiếp theo kéo thả đối tượng "Static Text" vào Header của trang báo cáo.
Tương tự kéo thả đối tượng "Static Text" thứ 2 vào Header của trang báo báo.

6.7- Chạy thử báo cáo lần 3

7- Gọi báo cáo JasperReport trong Java

Bạn có thể xem hướng dẫn gọi báo cáo JasperReport tại: