Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将生成的excel与axlsx_rails一起保存在我的项目文件夹中_Ruby On Rails_Excel_Xlsx_Axlsx - Fatal编程技术网

Ruby on rails 将生成的excel与axlsx_rails一起保存在我的项目文件夹中

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

我实际上可以生成一个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保存在我的项目文件夹中。

如果不了解您的应用程序,很难说,因此保存文件的一个常见选项是使用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'