У меня есть приложение rails, где я пытаюсь экспортировать некоторые данные в формате Excel.В моем листе Excel я хочу объединить несколько ячеек динамического ряда.Я пытаюсь следовать этому ответу, но он дает мне ошибку.После ответа, данного в этом решении, я создал файл excel.rb
в моем каталоге config/initializers
и вставил этот код
module Axlsx
class Worksheet
def merge_last_row(options={})
last_row = rows.last.index + 1
first_col,last_col = options[:columns]
if first_col && last_col
merge_cells "#{first_col}#{last_row}:#{last_col}#{last_row}"
else
merge_cells sheet.rows.last
end
rows.last.style = style if options[:style]
end
def fill_columns(column_count,options={})
row_data = options[:row_data] || []
(column_count - row.count).times do
row_data << nil
end
add_row row_data
end
end
end
, а затем в мой файл report.xls.axlsx
у меня есть следующий код
wb = xlsx_package.workbook
xlsx_package.use_autowidth = true
wb.add_worksheet(name: "gold_sheet") do |sheet|
@gold_live_console.each do |item|
section = item.room.section.try(:name)
time = item.bingning_inserted_at.strftime("%Y-%m-%d - %l:%M %p")
if section.present?
sheet.add_row %w(Date)
sheet.merge_last_row columns:["A","E"]
sheet.add_row [time]
sheet.add_row %w( Section )
sheet.add_row [item.room.section.try(:name)]
sheet.add_row %w( Gra_Name )
sheet.add_row [item.room.gra_employee.try(:full_name)]
sheet.add_row %w(Room# Credit Beginning_Status PM_Status Notes)
sheet.add_row [item.room_location, item.room_credit, item.beginning_status]
sheet.add_row()
end
end
end
Когда я запускаю это, это дает мне ActionView::Template::Error (undefined method merge_last_row'
ошибку
Я хочу объединить все столбцы от А до Е для строки с текстом Дата
Как мне использоватьвышеуказанный метод в моем файле axlsx?Я новичок в ruby, так что извините, если моя ошибка слишком глупа, но кто-нибудь может указать мне, что я делаю неправильно?