Poorman's Export is a simple but powerful CSV and XLS exporter.
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.
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'])
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!
Contribution directions go here.
The gem is available as open source under the terms of the MIT License.