Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

export to public folder using axlsx

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
like image 692
mukesh Avatar asked Mar 14 '13 06:03

mukesh


1 Answers

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.

like image 161
bblack Avatar answered Oct 14 '22 00:10

bblack