Gem RubyXL
Gem RubyXL cung cấp các phương thức tính toán trên file xlsx. Nó có khả năng đọc cấu trúc các tập tin định dạng Excel, thay đổi giá trị, thuộc tính các ô/hàng/cột trong đó. I. Cài đặt: Thêm dòng sau vào file Gemfile sau đó bundle install: gem install rubyXL II. Cách dùng: Thêm ...
Gem RubyXL cung cấp các phương thức tính toán trên file xlsx.
Nó có khả năng đọc cấu trúc các tập tin định dạng Excel, thay đổi giá trị, thuộc tính các ô/hàng/cột trong đó.
I. Cài đặt:
Thêm dòng sau vào file Gemfile sau đó bundle install:
gem install rubyXL
II. Cách dùng:
Thêm require vào ứng dụng:
require 'rubyXL'
1. Tạo một workbook với file excel có sẵn
workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
2. Tạo mới một Workbook
workbook = RubyXL::Workbook.new
3. Truy cập
- Truy cập vào một Worksheet
workbook.worksheets[0] # Trả về worksheet đầu tiên workbook[0] # Trả về worksheet đầu tiên workbook['Sheet1'] # Trả về worksheet có tên là 'Sheet1'
- Truy cập vào một hàng (gồm nhiều ô)
worksheet = workbook[0] worksheet.sheet_data[0] # Trả về hàng đầu tiên của worksheet worksheet[0] # Trả về hàng đầu tiên của worksheet
- Truy cập vào một ô
worksheet = workbook[0] worksheet.sheet_data[0][0] # Trả về ô A1 trong worksheet worksheet[0][0] # Trả về ô A1 trong worksheet
- Lấy ra các thuộc tính của ô/hàng/cột
worksheet = workbook[0] cell = workbook[0][0][0] cell.is_struckthrough cell.font_name cell.font_size cell.font_color cell.fill_color cell.horizontal_alignment cell.vertical_alignment cell.border_top worksheet.get_row_fill(0) worksheet.get_row_font_name(0) worksheet.get_row_font_size(0) worksheet.get_row_font_color(0) worksheet.is_row_underlined(0) worksheet.get_row_height(0) worksheet.get_row_horizontal_alignment(0) worksheet.get_row_vertical_alignment(0) worksheet.get_row_border_right(0) worksheet.get_column_fill(0) worksheet.get_column_font_name(0) worksheet.get_column_font_size(0) worksheet.get_column_font_color(0) worksheet.is_column_underlined(0) worksheet.get_column_awidth(0) worksheet.get_column_horizontal_alignment(0) worksheet.get_column_vertical_alignment(0) worksheet.get_column_border_right(0)
- Đọc worksheet
Để không bị lận lộn giữa các hàng, cột, ô, có thể đọc lần lượt theo từng hàng, từng ô trong hàng đó:
worksheet.each { |row| row && row.cells.each { |cell| val = cell && cell.value do_whatever_you_want(val) } }
4. Sửa đổi
- Thêm Worksheets
worksheet = workbook.add_worksheet('Sheet2')
- Đổi tên Worksheets
worksheet.sheet_name = 'Cool New Name'
- Thiết lập giá trị cho từng ô
worksheet.add_cell(0, 0, 'A1') # Thiết lập giá trị ô A1 bằng "A1" worksheet.add_cell(0, 1, ', 'A1') # Thiết lập công thức tính toán của ô B1 giống ô A1
- Thay đổi giá trị của ô
worksheet[0][0].change_contents("", worksheet[0][0].formula) # Thay đổi giá trị của ô A1 về rỗng
- Thay đổi Fonts
worksheet.sheet_data[0][0].change_font_bold(true) # Thiết lập ô A1 font là bold worksheet.change_row_italics(0,true) # Thiết lập hàng đầu tiên font là italics worksheet.change_column_font_name(0, 'Courier') # Thiết lập cột đầu tiên font chữ là Courier
- Thay đổi Fills
worksheet.sheet_data[0][0].change_fill('0ba53d') # Thiết lập ô A1 fill: '0ba53d' worksheet.change_row_fill(0, '0ba53d') # Thiết lập hàng đầu tiên fill: '0ba53d' worksheet.change_column_fill(0, '0ba53d') # Thiết lập cột đầu tiên fill: '0ba53d'
- Thay đổi Borders
# Các loại: hairline, thin, medium, thick # Vị trị: top, bottom, left, right, diagonal worksheet.sheet_data[0][0].change_border(:top, 'thin') # Thiết lập ô A1 có boder: top, thin worksheet.change_row_border(0, :left, 'hairline') # Thiết lập hàng đầu tiên có boder: left, hairline worksheet.change_column_border(0, :diagonal, 'medium') # Thiết lập cột đầu tiên có boder: diagonal, medium
- Căn lề
# Các kiểu: # Horizontal: center, distributed, justify, left, right # Vertical: bottom, center, distributed, top worksheet.sheet_data[0][0].change_horizontal_alignment('center') worksheet.change_row_horizontal_alignment(0, 'justify') worksheet.change_row_vertical_alignment(0, 'distributed') worksheet.change_column_vertical_alignment(0, 'top')
- Thay đổi chiều cao của hàng
worksheet.change_row_height(0, 30) # Thiết lập hàng đầu tiên có chiều cao là 30
- Thay đổi chiều rộng cửa cột
worksheet.change_column_awidth(0, 30) # Thiết lập cột đầu tiên có chiều cao là 30
- Gộp các ô
worksheet.merge_cells(0, 0, 1, 1) # Gộp 2 ô A1:B2
- Chèn thêm hàng/cột
Phương thức này sẽ chèn một hàng/cột vào vị trí chỉ định, đẩy tất cả các hàng/cột từ vị trí đó xuống dưới/về phía bên phải nó. Hàng/cột này có style giống với hàng bên trên/cột phía bên trái của nó.
worksheet.insert_row(1) worksheet.insert_column(1)
- Xóa hàng/cột
Phương thức này sẽ xóa một hàng/cột ở vị trí chỉ định, dồn tất cả các hàng/cột từ vị trí đó lên trên/về phía bên trái nó.
worksheet.delete_row(1) worksheet.delete_column(1)
- Chèn thêm ô
Phương thức này chèn thêm 1 ô ở vị trí chỉ định. Tùy theo :right hoặc :down mà những ô cùng hàng ở phía bên phải sẽ dồn về phía bên phải hoặc những ô cùng cột ở phía dưới sẽ dồn xuống dưới.
worksheet.insert_cell(0, 0, "blah", formula = nil, :right) # Thêm 1 ô ở vị trí A1, đẩy các ô cùng hàng về phía bên phải worksheet.insert_cell(0, 0, "blah", formula = nil, :down) # Thêm 1 ô ở vị trí A1, đẩy các ô cùng cột xuống dưới worksheet.insert_cell(0, 0, "blah")
- Xóa ô
Phương thức này xóa 1 ô ở vị trí chỉ định. Tùy theo :left hoặc :up mà những ô cùng hàng ở phía bên phải sẽ dồn về phía bên trái hoặc những ô cùng cột ở phía dưới sẽ dồn lên trên, không có gì nghĩa là chỉ xóa nội dung ô đó đi thôi.
worksheet.delete_cell(0, 0, :left) # Xóa ô A1, dồn các ô cùng hàng về phía bên trái worksheet.delete_cell(0, 0, :up) # Xóa ô A1, dồn các ô cùng cột lên trên worksheet.delete_cell(0, 0) # Xóa nội dung ô A1
- Thay đổi format của ô
cell = worksheet[0][0] cell.set_number_format '0.0000%'
Tài liệu dịch: https://github.com/weshatheleopard/rubyXL