我正在使用Rails 4.2,并使用gems axlsx和axlsx_rails 我将很快移至Rails 5,但现在我使用此版本。
我想要的内容:使用axls_rails gem从查询中导出xlsx文件
相反,我得到的是:相反,它将整个html文件导出为数据,请参见图片:
我完全按照3个不同的指南作为git文档,并且已经对其进行了多次调试,但没有发现问题。希望这里的人能帮助我了解造成问题的原因。
宝石文件:
gem 'rails', '4.2.11'
# import/export xlsx gems
gem 'write_xlsx'
gem 'rubyzip', '>= 1.2.1'
gem 'axlsx', git: 'https://github.com/randym/axlsx.git', ref: 'c8ac844'
gem 'axlsx_rails'
html文件:
= link_to "<i class='icon icon-file-down'></i> Export</a></li>".html_safe, server_report_system_reports_path(format: :xlsx)
控制文件:
def server_report
organization_id = params[:organization_id]
@accounts = Admin::Account.where("organization_id = ?", organization_id) unless organization_id.blank?
@accounts_paginated = @accounts.paginate(per_page: 10, page: params[:page] || 1 )
respond_to do |format|
format.html
format.xlsx {
response.headers['Content-Disposition'] = 'attachment; filename="server_report.xlsx"'
}
end
end
xlsx.axlsx文件:
wb = xlsx_package.workbook
wb.add_worksheet(name: "Accounts") do |sheet|
sheet.add_row ["Account id", "Member id", "Member name", "Member email"]
@accounts_paginated.each do |account|
account.members.each do |member|
sheet.add_row [account.id, member.id, member.name, member.email]
end
end
end
编辑: 我试图调用另一个名为export的def,并尝试查看response_to是否存在问题并使用另一个查询,但它也做了同样的事情
我也试图在format.xlsx这行中写,但是仍然没有改变:
编辑2: 我尝试在format_xlsx的axlsx.xlsx文件中渲染response_to文件,但是得到了相同的结果
response.headers ['Content-Disposition'] ='附件; filename =“ server_report.xlsx”'
答案 0 :(得分:0)
我发现了问题。我添加了布局:当我在控制器中渲染xlsx文件并且它起作用时为false