This gem transform an Array into a excel file using the spreadsheet gem.
@users = User.all @users.to_xls @users.to_xls(:headers => false) @users.to_xls(:columns => [:name, :role]) @users.to_xls(:columns => [:name, {:company => [:name, :address]}]) @users.to_xls(:columns => [:name, {:company => [:name, :address]}], :headers => [:name, :company, :address])
In order to send a file from the controller, you can save it on your server first:
@users.to_xls.write '/path/to/file/users.xls' send_file '/path/to/file/users.xls'
Alternatively you can use the method to_xls_data and send_data
send_data @users.to_xls_data, :filename => 'users.xls'
The method to_xls_data accepts the same parameters as to_xls.
In config/initializers/mime_types.rb register the custom mime type.
Mime::Type.register "application/vnd.ms-excel", :xls
In the controller where you want to export to excel, add the format.xls line.
class UserController < ApplicationController def index @users = User.all respond_to do |format| format.html format.xml { render :xml => @users } format.xls { send_data @users.to_xls_data, :filename => 'users.xls' } end end end
spreadsheet gem
Include next gems in your environment.rb config file: config.gem 'to_xls'