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
endPoorman'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:
$ bundleOr install it yourself as:
$ gem install poormans_exportAfter 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', :xlsAnd 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.