2017-07-30 20 views
0

私は実際にExcelを生成してクライアントにダウンロードリンクを表示できますが、私のサーバーのプロジェクトのフォルダにファイルが残っていればいいです私のプロジェクトのフォルダにaxlsx_railsで生成されたexcelを保存します

コントローラ

def generate_report 
    render xlsx: 'prueba',template: 'admin/client_reports/report_a.xlsx.axlsx', filename: "a.xlsx", disposition: 'inline', 
    xlsx_created_at: 3.days.ago, xlsx_author: "Elmer Fudd" 
end 

ビュー.xlsx.axlsx

wb = xlsx_package.workbook 

wb.add_worksheet(name: "A") do |sheet| 
    sheet.add_row ["Titulo", "Precio"] 
end 

私のプロジェクトのフォルダに生成されたExcelをどのように保存するかわかりません。

答えて

0

アプリケーションを知らなくても言うことは難しいので、ファイルを保存する一般的なオプションの1つは、Carrierwaveのようなファイル管理ソリューションを使用することです。つまり、ExcelAttachmentsのような新しいモデルを作成する必要があります。これはbelong_to :userです。その後、そのモデルにファイルを保存することができます。

これを行うには、Tempfileクラス(google it)を使用してAXLSXコンテンツをストリームにストリームし、ファイルをCWに戻す必要があります。 This答えが始まるのが良いかもしれません。

0

あなたがファイルを保存常にしている場合、あなたはカンニングとあなたのxlsx.axlsxテンプレートの最後にこれを置くことができます。

xlsx_package.serialize(file_name) 

あるいは、コントローラにあなたは、文字列にそれをレンダリングすることができ、かつその後、データとしてその文字列を果たすだけでなく、ファイル(未テストコード)に書き込む:

data = render_to_string handlers: [:axlsx], formats: [:xlsx], template: 'admin/client_reports/report_a.xlsx.axlsx' 
File.open("/file/path/and/name.xlsx","w") {|f| f.write(data) } 
send_data data, filename: "prueba.xlsx", type: Mime[:xlsx], disposition: 'inline' 

あなたは、またはあなたの要求が既にXLSXされているので、指定のハンドラ/フォーマットを必要としない場合があります。

関連する問題