Ruby on rails 将生成的excel与axlsx_rails一起保存在我的项目文件夹中
我实际上可以生成一个excel并向客户端显示下载链接,但我也希望该文件保存在我的服务器中的项目文件夹中,我的代码如下 控制器Ruby on rails 将生成的excel与axlsx_rails一起保存在我的项目文件夹中,ruby-on-rails,excel,xlsx,axlsx,Ruby On Rails,Excel,Xlsx,Axlsx,我实际上可以生成一个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: "E
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保存在我的项目文件夹中。如果不了解您的应用程序,很难说,因此保存文件的一个常见选项是使用Carrierwave之类的文件管理解决方案。这意味着您需要创建一个新模型,类似于
ExcelAttachments
,它可以属于:user
。然后可以开始在该模型上保存文件
要做到这一点,您可能需要使用Tempfile
class(googleit)并将AXLSX内容流式传输到其中,然后将文件返回CW。答案可能是一个好的开始 如果您总是保存文件,您可以作弊并将其放在xlsx.axlsx模板的末尾:
xlsx_package.serialize(file_name)
或者,在控制器中,您可以将其呈现为字符串,然后将该字符串用作数据并写入文件(未测试的代码):
您可能需要也可能不需要指定的处理程序/格式,因为您的请求已经是xlsx
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'