Hướng dẫn ruby excel gem

Sử dụng gem Axlsx export excel file trong Rails

1. Giới thiệu gem axlsx_rails

Trong mọi ứng dụng Rails đều luôn có yêu cầu trích xuất dữ liệu ra các file CSV, những file này sau đó được chuyển thành định dạng Excel để có thể tùy biến định dạng, thêm các style, biểu đồ, .... Tuy nhiên nếu có thể tự động thực hiện các tác vụ tùy biến đó vừa có thể sinh ra các file xlsx ngay lập tức thì thật tuyệt vời, gem axlsx với đa dạng các tính năng là câu trả lời tốt nhất cho vấn đề này.

Gem axlsx_rails cung cấp một danh sách lớn các tính năng được hỗ trợ, có thể kể đến đó là:

  • Tạo ra các bản báo cáo xlsx chuyên nghiệp và có thể kiểm soát độ chính xác của dữ liệu

  • Dễ dàng tạo nên các biểu đồ như hình tròn 3D, biểu đồ đường, cột dựa vào các dữ liệu trong worksheet của bạn hoặc từ database mà không cần chuyển dữ liệu vào worksheet, ngoài ra có thể tùy biến màu sắc, biểu tượng, …

  • Tùy biến style, màu sắc, bố cụ, định dạng chữ, định dạng số, cho toàn bộ hàng hay chỉ một cell ở bất kỳ đầu trong workbook

  • Tự động hỗ trợ nhiều kiểu, tự động xác định kiểu dữ liệu bạn dùng, có thể là Float, Integer, String, Date, Time và Boolean và chuyển vào spreadsheet của bạn.

  • Gắn các ảnh jpg, gif và png với các thẻ link vào worksheet

  • Dễ dàng tham chiếu tới các cell của worksheet bằng format “A1” và “A1:D4” hay từ workbook bằng cách sử dụng syntax “Sheet1!A3:B4” trong đó Sheet1 là worksheet đang trỏ tới và A3, B4 lần lượt là các cell đang tham chiếu đến.

  • Hỗ trợ tính toán, gộp hàng, cột một cách dễ dàng.

  • Tự động lọc các bảng với worksheet.auto_filter

  • Xuất ra thành file hay một thiết bị StringIO, ví dụ như máy in, hỗ trợ căn lề và các tùy biến để in ấn, cài đặt mật khẩu cho sheet của bạn.

  • Có thể tương thích 1 phần với GoogleDocs, LibreOffice và Numbers

  • Tùy chỉnh tên header để in, tạo ra các header và footer cho sheet.

2. Cách sử dụng

Ta sẽ tìm hiểu nhanh các bước sử dụng cơ bản của gem axlsx

  • Đầu tiên ta khởi tạo database, ví dụ tạo bảng Product có 2 cột sau:
rails g model Product title:string price:decimal

Tạo dữ liệu demo bằng gem faker và sử dụng file seeds.rb, sau đó xây dựng chức năng đơn giản:

class ProductsController 

Chủ Đề