10

私はaxlsxgemを使用してExcelファイルを作成しています。プロジェクトのホームディレクトリでxlsxファイルとしてシリアル化されます。ただし、ファイルをRailsアプリのパブリックフォルダーに作成するか、サーバーに保存せずにユーザーが直接ダウンロードできるようにします。これどうやってするの??これがxlsxファイルを生成するコントローラーです

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
4

2 に答える 2

4
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

これにより、xls ファイルのファイル コンテンツが生成されます。次に、send_dataそれをユーザーに渡すか、ディスク上のファイルに保存できます。

于 2013-03-14T06:20:40.787 に答える
0

遅い回答: axlsx_rails gem を使用することもできます。axlsx のテンプレート ハンドラーが追加され、xlsx ファイルの生成と提供が非常に簡単になります。

https://github.com/straydogstudio/axlsx_rails

パーシャルを使用して、すべての axlsx コードをビューに配置できます。Rails で xlsx をよくやるなら重宝します。

もちろん、シリアル化も問題なく機能します。または、@fearpi が述べたようにストリーミングすることもできます。

于 2013-07-27T03:10:03.710 に答える