Project

to_excel

0.0
No commit activity in last 3 years
No release in over 3 years
Export ruby objects to excel file
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

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.