Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Export ruby objects to excel file. Allow many collections of different class. Can include associations attributes.
Ruby
Branch: master

* Update to_excel.gemspec

* Style README
latest commit 83a572fd86
anoiaque authored
Failed to load latest commit information.
lib * to_excel 1.0
test * to_excel 1.0
LICENSE LICENSE + README
README.rdoc * Update to_excel.gemspec
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.