Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Export ruby objects to excel file. Allow many collections of different class. Can include associations attributes.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
LICENSE
README.rdoc
to_excel.gemspec

README.rdoc

Introduction

I first used the good “arydjmal/to_xls” plugin but it doesn't allow collections of multiples objects from different classes and can't export associations attributes of a class.

With to_excel gem you can export multiples collections of objects of different classes, moreover you have the possibility of exporting associations's attributes (recursively).

Usage

Basic usage

@users = User.all

With one collection. All columns are exported with default humanized attributes names for excel columns :

[@users].to_excel

If you don't want excel header :

@users.to_excel headers => false

Personalized header

header = ['User Id', 'User name']
[@users].to_excel(:map => { User => [:id,:name], :headers => header)

To restrict attributes :

[@users].to_excel(:map => {User => [:age, :id, :name]}) #User is the class of users objects.

Multiples collections of different classes

Suppose you have two classes : User and Computer, with Computer has_one :user

@users = [User.new(:name => 'Dupont', :age => 25)]
@computers =[Computer.new(:brand => 'Apple', :portable => true, :user => @users.first)]

You can export in the same file users and computers (in this order)

[@users, @computers].to_excel(:map => { User => [:id,:name], Computer => [:id, :brand,]})

You can export nested attributes, for example name of user of computer

In order to export the name column of the user of the computer, include [:user,:name] in the attribute list of key Computer :

[@users, @computers].to_excel(:map => { User => [:id,:name], Computer => [:id, :brand, [:user, :name]]})

You can export value of a instance method

Suppose Computer class has an instance method macintosh? You can export the column values as if it was an attribute :

[@computers].to_excel(:map => {Computer => [:id, :macintosh?]})

Controller side

class UsersController < ....

....
   send_data [@users, @computers].to_excel(:map => { User => [:id,:name], Computer => [:id, :brand,]})

....
end

If you want to use it with respond_to, you may have to include in initializes/mime_types :

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

Dependencies

No dependency.

Install

sudo gem install to_excel

Copyright © 2010 Philippe Cantin, released under the MIT license.

Something went wrong with that request. Please try again.