102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/crudboy/ext/array.rb', line 102
def write_excel(filename, *fields, **options)
sheet_name = options[:sheet_name] || 'Sheet1'
generate_excel(filename) do |workbook|
workbook.add_worksheet(name: sheet_name) do |sheet|
if size > 0 && first.is_a?(ActiveRecord::Base)
if fields.empty?
fields = first.attributes.keys
else
fields = fields.map(&:to_s)
end
sheet.add_row(fields, types: [:string] * fields.size)
end
if size > 0 && first.is_a?(Hash)
if fields.empty?
fields = first.keys
end
sheet.add_row(fields, types: [:string] * fields.size)
end
each do |row|
if row.is_a?(Array)
sheet.add_row(row.map(&:to_s), types: [:string] * row.size)
else
sheet.add_row(row.slice(*fields).values.map(&:to_s), types: [:string] * fields.size)
end
end
end
end
end
|