I am using the axlsx gem to create excel files. I get them serialized in my project home directory as an xlsx file. But I want the file to be created in the public folder of my rails app, or directly downloadable by the user without saving it in the server. How can I do this?? Here is the controller that generates the xlsx file
def export_excel
p = Axlsx::Package.new
wb = p.workbook
wb.add_worksheet(:name => "Basic Worksheet") do |sheet|
(1..10).each { |label| sheet.add_row [label, rand(24)+1] }
sheet.add_chart(Axlsx::Bar3DChart, :start_at => "A14", :end_at => "F24") do |chart|
chart.add_series :data => sheet["B1:B10"], :labels => sheet["A1:A10"], :title => sheet["A1"]
end
end
p.serialize('charts.xlsx')
end
p = Axlsx::Package.new
# ...
outstrio = StringIO.new
p.use_shared_strings = true # Otherwise strings don't display in iWork Numbers
outstrio.write(p.to_stream.read)
outstrio.string
This will yield the file contents of the xls file. Then you can either send_data
it to the user, or save it to a file on disk.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With