0.0
Low commit activity in last 3 years
No release in over a year
Poorman's Export is a simple but powerful CSV and XLS exporter
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 4.2.0
 Project Readme

Poorman's Export

Poorman's Export is a simple but powerful CSV and XLS exporter.

Usage

Poorman's Export transforms a collection of objects into a CSV or a XLS file that can be sent to the browser just like this:

def index
  @collection = Article.all
  fields_to_export = %i[id title body created_at published_at]

  respond_to do |format|
    format.html
    format.csv do
      send_data(
        PoormansExport::Exporter.new(@collection, fields_to_export).csv_string,
        type: 'text/csv; charset=utf-16le; header=present',
        disposition: 'attachment',
        filename: 'articles.csv'
      )
    end
    format.xls do
      send_data(
        PoormansExport::Exporter.new(@collection, fields_to_export).xls_string,
        type: 'application/xls',
        disposition: 'attachment',
        filename: 'articles.xls'
      )
    end
  end
end

Poorman's Export will process the collection and convert its fields into something readable by a human, automatically processing dates, times, booleans and even relations, by using the to_s method of the related object.

Custom headers

By default, Poorman's Export will extract the localized name of each of the fields of the exportation for its header by using human_attribute_name. You can override this behavior by adding an extra parameter in the constructor with your own custom headers:

PoormansExport::Exporter.new(@collection, ['full_name', 'date_of_birth', 'city_name'], ['Name', 'Birthday', 'City'])

Installation

Add this line to your application's Gemfile:

gem 'poormans_export'

And then execute:

$ bundle

Or install it yourself as:

$ gem install poormans_export

After installing the gem, register the CSV and XLS MIME types in your application by adding these lines to your config/initializers/mime_types.rb file:

Mime::Type.register 'text/csv; charset=utf-16le; header=present', :csv
Mime::Type.register 'application/xls', :xls

And you're good to go!

Contributing

Contribution directions go here.

License

The gem is available as open source under the terms of the MIT License.