ruby-on-rails - Axlsx rails 。生成 .xlsx 文件并将文件名响应为 json/html

标签 ruby-on-rails json export-to-excel axlsx

我正在使用 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/

相关文章:

ruby-on-rails - ActiveAdmin 操作

ruby-on-rails - rails 在启动时记录错误

json - 在 golang 中持久化嵌套结构

javascript - 如何将表导出为 10000 到 40000 行的 excel

excel - SSRS 2008 R2 excel 导出在报表服务器上不起作用

ruby-on-rails - 如何使用 RVM 卸载 ruby​​ 和 gems?

ruby-on-rails - 将redis部署到heroku无法连接

javascript - 与 json 文件中的智能表进行数据绑定(bind)

php - 从PHP中的大json文件读取大数组

c# - ASP.NET Web 应用程序导出的 excel 文件上的警告弹出窗口