Skip to content

cesamnature/to_xls-rails

 
 

Repository files navigation

to_xls-rails

This simple plugin gives you the ability to call to_xls to a collection of activerecords for Rails.

Install

gem install spreadsheet
gem install to_xls-rails

Usage

add below to RAILS_ROOT/config/initializers/mime_types.rb
Mime::Type.register_alias "text/excel", :xls

@posts = Post.all

#
# default are export header and all fileds
#

@posts.to_xls
@posts.to_xls(:only => [:title, :body])
@posts.to_xls(:except => [:id])
@posts.to_xls(:header => false)

# Will prepend above header
# | Col 0, Row 0 | Col 1, Row 0 |
# | Col 0, Row 1 |              |
@posts.to_xls(:prepend => [["Col 0, Row 0", "Col 1, Row 0"], ["Col 0, Row 1"]])

# Translation of a column-value
@posts.to_xls{|column, value, row_index| column==:salutation ? t(value) + " at #{row_index}" : value}

Example

class PostsController < ApplicationController
  def index
    @posts = Post.all

    respond_to do |format|
      format.xls { send_data(@posts.to_xls) }
      # format.xls {
      #   filename = "posts-#{Time.now.strftime("%Y%m%d%H%M%S")}.xls" 
      #   send_data(@posts.to_xls, :type => "application/excel; charset=utf-8; header=present", :filename => filename)
      # }
    end
  end
end

Works on Rails 3:

class PostsController < ApplicationController
  def index
    # add this to config/initializers/mime_types.rb
    Mime::Type.register "application/vnd.ms-excel", :xls

    @posts = Post.all

    respond_to do |format|
      format.xls {
        send_data @posts.to_xls
        return # prevet Rails to seek for index.xls.erb
      }
    end
  end
end

Contributors

Note

Copyright © 2010 [email protected], released under the MIT license

About

Export Rails ActiveRecord data to excel file.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%