to_xls gem

This gem transform an Array into a excel file using the spreadsheet gem.

Usage

@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.

Requirements

In config/initializers/mime_types.rb register the custom mime type.

Mime::Type.register "application/vnd.ms-excel", :xls

How to use

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

Dependencies

spreadsheet gem

Install

Include next gems in your environment.rb config file:

  config.gem 'to_xls'