rails add_image ruby-on-rails ruby export-to-excel

ruby on rails - add_image - Rieles: exporta registros a un archivo de Excel descargable usando axlsx gem(Keep MVC)



axlsx rubyzip (5)

Establezca render false en HTML y evite JSON, use XLS y para rastrear, puede ver el terminal donde ha iniciado los rieles.

He instalado la gema axlsx con éxito desde https://github.com/randym/axlsx Aquí está el código de mi controlador que usé para crear un archivo excel a través de esta gema.

Pero nada sucede con este código, en cambio, me muestra un error mimo no inicializado

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

En segundo lugar, trato con este código:

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

Pero desafortunadamente, no funciona. ¿Alguien puede decirme que no insinúa una solución para hacer mi tarea?

He intentado por tercera vez según sugerencia:

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

Me arrojó error http 406


Para evitar el error de tipo mime sin inicializar, agregue el siguiente archivo:

# config/initializers/mime_types.rb Mime::Type.register "application/xlsx", :xlsx

Y aquí hay un breve ejemplo de qué hacer para descargar el archivo 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


Trate de usar la gema axlsx_rails con plantilla. En mi caso utilicé la siguiente configuración para que funcione. y también un enlace con la extensión .xlsx para representarlo en formato xlsx.

ARCHIVO GEM

gem ''axlsx'', ''~> 2.0'' gem "axlsx_rails"

Controlador archivo-pagos_controller.rb

def download @payments = Payment.all respond_to do |format| format.xlsx {render xlsx: ''download'',filename: "payments.xlsx"} end end

Ver archivo- 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


Yo uso gemas.

gem ''axlsx'', ''~> 2.0'' gem "axlsx_rails"

Pero estas gemas ocurrieron un error. Cuando elimino la gema ''rubyzip'' de Gemfile.lock, se solucionó el problema de bundle install . Gracias.


gem ''axlsx'', ''~> 2.0'' gem "axlsx_rails"