post-image

Các thành phần cấu thành báo cáo trong JasperReport

Tổng quan

Trong bài viết Giới thiệu về công cụ JasperSoft Studio, chúng ta đã có một ví dụ đầu tiên về xây dựng báo cáo JasperReport sử dụng phần mềm JasperSoft Studio. Báo cáo này là một chứng từ “Phiếu xuất kho” rất đơn giản với nguồn dữ liệu là một file Excel. Trong báo cáo này chúng ta nhận thấy có một số các thành phần như ảnh logo, thành phần văn bản, thành phần đồ họa kẻ ô chữ nhật… và trong bài viết này, chúng ta sẽ tìm hiểu một cách chi tiết các thành phần có thể sử dụng trong một báo cáo JasperReport.

Báo cáo có rất nhiều các đối tượng đồ họa được đưa vào, các đối tượng này được xây dựng các khối để dễ sử dụng lại và được gọi là các thành phần (element) của báo cáo. Các thành phần này có thể đơn giản là các đối tượng chứa văn bản, chứa các đường vẽ như đường thẳng, hình học… hoặc phức tạp hơn là đối tượng chứa hình ảnh, bảng biểu dữ liệu thậm chí là đối tượng bản đồ.

Trong bài viết này chúng ta sẽ tìm hiểu các thuộc tính cơ bản nhất của một thành phần, cách thức đưa chúng vào một vị trí mong muốn trong báo cáo và tìm hiểu kỹ hơn một số thành phần cơ bản. Một số thành phần có độ phức tạp cao sẽ được tách ra thành các bài viết riêng.

1. Thuộc tính cơ bản của một thành phần báo cáo

Các thành phần báo cáo được liệt kê trong một cửa sổ nhỏ trên giao diện JasperSoft Studio có tên là Pallete, cửa sổ này chia thành hai phần:

  • Basic elements: là các thành phần báo cáo cơ bản, đây chính là các thành phần hay dùng nhất trong một báo cáo.
  • Composites elements: các thành phần tổng hợp, là những thành phần được JasperReport xây dựng sẵn chứa các thông tin như số trang, ngày giờ hiện tại… giúp hiển thị thông tin tài liệu nhanh chóng.

Mỗi thành phần báo cáo kể trên có rất nhiều các thuộc tính được liệt kê trong cửa sổ Properties nằm ngay dưới cửa sổ Palette. Các thuộc tính này được chia thành nhiều danh mục tiện cho việc tìm kiếm và thiết lập:

  • Appearance: Các thiết lập liên quan đến hiển thị như kích thước, màu sắc, vị trí, kiểu cách chữ.
  • Borders: Thiết lập liên quan đến khung viền, khoảng cách nội dung đến viền thành phần, màu sắc và độ đậm của viền.
  • Inheritance: Các thuộc tính mà thành phần này kế thừa từ thành phần khác.
  • Hyperlink: Thiết lập liên kết cho các thành phần như ảnh, đoạn text hoặc biểu đồ.
  • Advanced: Hiển thị thông tin chi tiết về thành phần báo cáo bạn đang chọn.

2. Chèn, đặt vị trí, căn lề và định dạng các thành phần trong báo cáo

Bạn có thể dễ dàng đưa các thành phần vào báo cáo bằng cách kéo thành phần cần thiết và thả vào báo cáo. Bạn cũng có thể chọn thành phần và di chuyển chúng đến vị trí mong muốn trong báo cáo. Trong JasperSoft Studio có chế độ hiển thị lưới giúp bạn căn chỉnh lề cho các thành phần báo cáo dễ dàng. Mặc định chế độ hiển thị lưới được bật hoặc bạn có thể bật lại bằng cách vào menu View -> Show Grid.

Một chức năng cũng hay sử dụng với hiển thị lưới là Snap to Grid là khi một thành phần ở gần một đường thẳng trong lưới nó sẽ bị hút vào giúp căn lề cho thành phần báo cáo cực đơn giản. Khi có nhiều các thành phần trong báo cáo, việc căn lề, xác định kích thước… thủ công rất khó khăn. Rất may, JasperSoft Studio có rất nhiều công cụ giúp cho việc tạo ra những báo cáo phức tạp trở lên hết sức đơn giản. Nhấp chuột phải vào các thành phần bạn cần sắp xếp, trong menu xổ ra bạn sẽ thấy rất nhiều công cụ:

Menu ngữ cảnh các chức năng liên quan đến thành phần trong báo cáo

Order: Sắp xếp các thành phần theo chiều sâu (chiều z) tức là thành phần này đè lên thành phần khác.

Sắp xếp theo chiều sâu
  • Bring To Front: đưa thành phần đang lựa chọn đè lên trên tất cả các thành phần khác
  • Bring Forward:
  • Send Backward:
  • Send To Back:

Align in Container: Căn lề các thành phần trong báo cáo

Căn lề tự động các thành phần
  • Align To Center Horizontally
  • Align To Center Vertically
  • Center
  • Align To Left Margin
  • Align To Right Margin
  • Align To Top Margin
  • Align To Bottom Margin

Size to Container: Điều chỉnh kích thước thành phần cho phù hợp với thành phần cha.

Điều chỉnh kích thước thành phần
  • Fit Width
  • Fit Height
  • Fit Both

Arrange In Container: Sắp xếp các thành phần con trong thành phần cha.

Bố cục các thành phần con trong thành phần cha
  • Free Layout
  • Horizontal Layout
  • Vertical Layout
  • Grid Layout
  • Spreadsheet Layout

3. Các thành phần báo cáo cơ bản

3.1 Các thành phần đồ họa

Line: sử dụng để vẽ các đường thẳng, mặc định độ dày của đường thẳng là 1px và có màu mặc định là màu đen. Rectangle: sử dụng để vẽ hình chữ nhật hoặc hình vuông. Ellipse: sử dụng để vẽ hình elip hoặc hình tròn. Image: hình ảnh là thành phần báo cáo đồ họa phức tạp. Khi kéo thành phần image vào báo cáo, một cửa sổ Create new image element xuất hiện để đưa vào đường dẫn của ảnh. JasperSoft Studio không lưu trữ ảnh ở bất kỳ đâu, nó chỉ lưu lại đường dẫn.

3.2 Thành phần văn bản

Trong báo cáo JasperReport có hai loại thành phần văn bản là static text và text field. Static text được sử dụng để hiển thị những văn bản không thay đổi kể cả lúc thiết kế lẫn lúc chạy báo cáo, do vậy static text không có khả năng hiển thị văn bản với các ngôn ngữ khác nhau một cách tự động.

Text Field tương tự với Static Text nhưng nội dung có thể thay đổi do nội dung của Text Field là một biểu thức (expression), biểu thức này có thể trả về giá trị ở rất nhiều dạng, cho phép người dùng thiết lập các mẫu khác nhau để định dạng giá trị. Text Field có thể có độ dài văn bản tùy ý và có nhiều lựa chọn để xử lý căn lề, đặt vị trí, xuống dòng (word wrap)… Chúng ta sẽ tìm hiểu các biểu thức trong JasperReport trong một bài riêng.

3.3 Thành phần khung chứa

Thành phần khung chứa là một thành phần có thể chứa nhiều các thành phần báo cáo khác, có thể thiết lập đường viền xung quanh nó, thậm chí nó có thể chứa các thành phần khung chứa khác. Trong cửa sổ Outline, thành phần khung chứa được thể hiện như một nút chứa các thành phần khác. Frame là một thành phần khung chứa, nó có thể chứa các frame khác.

Thêm một thành phần vào frame bằng cách kéo và thả từ vùng ngoài hoặc từ cửa sổ Palette vào frame. Vị trí các thành phần trong frame sẽ là tương đối với vị trí của khung chứa. Nếu khung chứa là một dải hiển thị (band) còn gọi là vùng hiển thị như vùng title, page header, column header, detail… các thành phần báo cáo có vị trí tương đối với lề trên và lề trái của vùng hiển thị. Nếu vùng chứa là một frame thì vị trí các thành phần cũng tương đối với góc trên trái của frame.

Đặc tính khi sử dụng frame ngoài việc có thể vẽ viền xung quanh giống như khi sử dụng thành phần Rectangle là: + Khi di chuyển frame, tất cả các thành phần được chứa bên trong frame cũng được di chuyển theo. + Khi sử dụng Rectangle để đè lên các thành phần khác, các thành phần bên trong Rectangle không đè lên như frame và có vấn đề khi xuất ra định dạng HTML do HTML không hỗ trợ các thành phần đè lên nhau. + Frame tự động trải nội dung của nó và các thành phần tùy thuộc vào thiết lập thuộc tính Position type, nó giúp cho dễ dàng hơn trong thiết kế và quản lý các thành phần.

4. Thành phần tổng hợp trong báo cáo

Thành phần tổng hợp (composite element) là một hoặc nhiều các thành phần báo cáo cơ bản trong phần 3 kết hợp với nhau. Ví dụ: bạn muốn có một thành phần là một khung chứa logo và các thông tin của công ty để thành phần này có thể sử dụng cho tất cả các mẫu báo cáo sau này mà không phải thiết kế lại. Thành phần tổng hợp chính là thứ bạn cần đến. Chú ý, thành phần tổng hợp không thể chứa các thành phần báo cáo có sử dụng subdataset (SubDataset là cái gì thì chúng ta sẽ bàn sau trong một bài cụ thể) như biểu đồ, bảng dữ liệu, danh sách và bảng dữ liệu phân tích chéo (crosstab). Nếu thành phần tổng hợp chứa các thành phần sử dụng biểu thức (ví dụ như biểu thức trong text field), khi đó các đối tượng bạn tham chiếu trong biểu thức này (ví dụ các biến, trường hoặc tham số) phải có sẵn trong báo cáo nơi mà bạn sử dụng thành phần tổng hợp, nếu không sẽ có lỗi khi biên dịch hoặc xem báo cáo.

4.1 Tạo một thành phần tổng hợp

Chúng ta trở lại với ví dụ về phiếu xuất kho, khi hoàn thiện xong phiếu xuất kho, bạn thấy rằng phần thông tin về công ty và logo ở phía trên chứng từ có thể được sử dụng lại cho chứng từ khác, ví dụ phiếu bảo hành chẳng hạn, chúng ta sẽ tạo ra một thành phần tổng hợp là Company Information.

Ví dụ tạo thành phần tổng hợp từ phiếu xuất kho

Bước 1: Trong report Phiếu xuất kho, lựa chọn tất cả các thành phần mà bạn muốn đưa vào thành phần tổng hợp. Để lựa chọn nhiều thành phần bạn có thể giữ phím Ctrl hoặc Shift và dùng chuột để lựa chọn. Khi lựa chọn xong bạn có thể đưa hết các thành phần này vào một thành phần frame bằng cách bấm chuột phải và chọn Enclose into Frame.

Bước 2: Chuột phải và chọn Save as Composite element… khi đó cửa sổ Composite Element Settings xuất hiện.

Cửa sổ tạo thành phần tổng hợp trong báo cáo JasperReport

Một số thông tin cần nhập vào:

  • Name: Tên của thành phần tổng hợp
  • Description: Mô tả thông tin thành phần tổng hợp cần tạo
  • Icon: Đường dẫn đến ảnh biểu tượng cho thành phần tổng hợp.
  • Position in Palette: Vị trí hiển thị của thành phần tổng hợp tạo ra, có thể đưa vào Basic Elements hoặc Composite Elements.

Bước 3: Sau bước 2 bạn sẽ thấy xuất hiện thành phần báo cáo trong tab Composite Elements trong cửa sổ Palette. Như vậy bạn đã có thể sử dụng thành phần tổng hợp vừa tạo ra trong các báo cáo khác sau này.

Composite element trong cửa sổ Palette

4.2 Chỉnh sửa, xuất và tải lại các thành phần tổng hợp

Các thành phần tổng hợp chúng ta tạo ra có thể chỉnh sửa, xóa đi hoặc xuất ra file để có thể tải lại vào JasperSoft Studio được cài đặt trên các máy tính khác. Các tính năng này cũng giúp cho việc phân phối các bản thiết kế báo cáo dễ dàng hơn. Để thực hiện các thao tác trên, nhấp chuột phải vào thành phần tổng hợp mà bạn tạo ra, một menu ngữ cảnh hiện ra với các tính năng:

Các tùy chọn tính năng liên quan đến thành phần tổng hợp
  • Edit: Chỉnh sửa thông tin thành phần tổng hợp như tên, biểu tượng, mô tả…
  • Open in Designer: Mở thành phần tổng hợp trong màn hình thiết kế để có thể thay đổi nội dung thêm bớt các thành phần báo cáo trong đó.
  • Delete: Xóa thành phần tổng hợp.
  • Export Composite Elements: xuất các thành phần tổng hợp thành file riêng để có thể chia sẻ với các máy tính khác.
  • Import Composite Elements: tải các thành phần tổng hợp từ file đã được tạo ra ở bước trên.

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

Trả lời

Email của bạn sẽ không được hiển thị công khai.