我已经从 https://github.com/randym/axlsx 成功安装了 axlsx gem 这是我用来通过这个 gem 创建 excel 文件的 Controller 代码。
但是这段代码没有任何反应,而是显示了一个错误未初始化的 mime
class Coaches::PaymentsController < ApplicationController
before_filter :authenticate_coach!
# List all the payments
def index
if !params[:sort].blank?
@payments = Payment.includes(:member).paginate(:page => params[:page], :order => sort_column + " " + sort_direction)
else
@payments = Payment.includes(:member).paginate(:page => params[:page], :order=>'id desc')
end
respond_to do |format|
format.html
# Change format to xlsx
format.xlsx
format.json { render json: @payments }
end
end
end
其次,我尝试使用这段代码:
wb = xlsx_package.workbook
wb.add_worksheet(name: "Buttons") do |sheet|
@buttons.each do |button|
sheet.add_row [button.name, button.category, button.price]
end
end
但不幸的是,它不起作用。谁能告诉我仅提示而不是解决方案来完成我的任务?
我按照建议尝试了第三次:
def index
if !params[:sort].blank?
@payments = Payment.includes(:member).paginate(:page => params[:page], :order => sort_column + " " + sort_direction)
else
@payments = Payment.includes(:member).paginate(:page => params[:page], :order=>'id desc')
end
respond_to do |format|
format.xlsx do
p = Axlsx::Package.new
wb = p.workbook
wb.add_worksheet(name: "Your worksheet name") do |sheet|
sheet.add_row ["First Column", "Second", "Third"]
sheet.add_row [1, 2, 3]
sheet.add_row [' preserving whitespace']
end
send_data p.to_stream.read, type: "application/xlsx", filename: "filename.xlsx"
end
end
end
它抛出了 http 406 错误
最佳答案
尝试使用 axlsx_rails带有模板的 gem 。 就我而言,我使用以下配置使其工作。以及扩展名为 .xlsx 的链接,以 xlsx 格式呈现它。
gem 文件
gem 'axlsx', '~> 2.0'
gem "axlsx_rails"
Controller 文件- payments_controller.rb
def download
@payments = Payment.all
respond_to do |format|
format.xlsx {render xlsx: 'download',filename: "payments.xlsx"}
end
end
查看文件-download.xlsx.axlsx
wb = xlsx_package.workbook
wb.add_worksheet(name: "Payments") do |sheet|
sheet.add_row ["ID", "Notes","Amount($)","Deposit Date"]
@payments.each do |payment|
sheet.add_row [payment.id, payment.notes,payment.amount,payment.date_deposite]
end
end
关于ruby-on-rails - Rails - 使用 axlsx gem (Keep MVC) 将记录导出到可下载的 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24053901/