複数のCSVファイルをエクセルにまとめる
複数のCSVを一つのエクセルにまとめたい場合には、axlsxがとても便利。
テーブルのスタイルも変更できる。
require 'csv'
require 'axlsx'
csvfiles = %w(test1.csv test2.csv)
Axlsx::Package.new do |p|
def right_bottom_ref(cols,rows)
row_ref = rows.to_s
col_ref = 'A'
(cols-1).times{col_ref.next!}
return "A1:#{col_ref}#{row_ref}"
end
csvfiles.each do |csv|
p.workbook.add_worksheet(:name => csv) do |sheet|
CSV.foreach(csv) do |row|
sheet.add_row row
end
ref = right_bottom_ref sheet.cols.length, sheet.rows.length
sheet.add_table(ref, :name => csv, :style_info => { :name => "TableStyleMedium21" })
end
end
p.serialize('sample.xlsx')
end