我正在使用 axlsx_rails gem 生成 xlsx 文件。
收集用户输入后,我将数据发布到 /basic_report_post.xlsx
Controller 操作看起来像
def basic_report_post
@config = params[:config]
@data = params[:data]
@filename = "#{Rails.root}/public/test.xlsx"
respond_to do |format|
format.xlsx {
render xlsx: 'basic_report_post'
}
end
end
查看此操作的文件 basic_report_post.xlsx.axlsx
wb = xlsx_package.workbook
wb.add_worksheet(name: 'Data1') do |s|
# Drawing columns
end
xlsx_package.serialize @filename
我的问题是我收到的响应数据(在成功后操作中)是原始 .xlsx 文件。
但我需要以某种方式响应 @filename
(格式 json/html)才能下载它。
最佳答案
可以使用axlsx_rails
模板渲染器创建字符串并将其保存到文件:
def basic_report_post
@config = params[:config]
@data = params[:data]
@filename = "#{Rails.root}/public/test.xlsx"
File.open(@filename, 'w') do |f|
f.write render_to_string(handlers: [:axlsx], formats: [:xlsx], template: 'path/to/template')
end
render json: {name: @filename}
end
然后,如果需要,您可以使用模板直接提供文件。
关于ruby-on-rails - Axlsx rails 。生成 .xlsx 文件并将文件名响应为 json/html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23689472/