https://github.com/randym/axlsx からaxlsx gemを正常にインストールしました。このgemを使用してExcelファイルを作成するために使用したコントローラーコードを次に示します。
しかし、このコードでは何も起こらず、代わりにエラー初期化されていない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
しかし、残念ながら機能しません。誰かが私の仕事をするための解決策ではなく、ヒントだけを教えてもらえますか?
私は提案に従って3回試しました:
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 with templateを使用してみてください。私の場合、私はそれを機能させるために以下の設定を使用しました。また、xlsx形式でレンダリングするための拡張子.xlsxのリンク。
GEMファイル
gem 'axlsx', '~> 2.0'
gem "axlsx_Rails"
コントローラーファイル-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
初期化されていないMIMEタイプのエラーを防ぐには、次のファイルを追加します。
# config/initializers/mime_types.rb
Mime::Type.register "application/xlsx", :xlsx
そして、xlsxファイルをダウンロードするために何をすべきかの簡単な例です:
format.xlsx do
p = Axlsx::Package.new
wb = p.workbook
wb.add_worksheet(name: "Your worksheet name") do |sheet|
# Add your stuff
end
send_data p.to_stream.read, type: "application/xlsx", filename: "filename.xlsx"
end
HTMLにrender falseを設定し、JSONを使用する代わりにXLSを使用してください。トレースには、Railsを開始した端末を確認できます。
gem 'axlsx', '~> 2.0'
gem "axlsx_Rails"
私は宝石を使用します。
gem 'axlsx', '~> 2.0'
gem "axlsx_Rails"
しかし、これらの宝石にはエラーが発生しました。 Gemfile.lockから 'rubyzip' gemを削除すると、bundle install
問題は解決されました。ありがとう。