The exporting of data to CSV in Rails is very easy just like snitching icecream from 2 year baby. You just need to install a Gem for it and a method and its done.
The procedure is written below:-
1. install the fastercsv gem :-
sudo gem install fastercsv2. now in the controller use this gem and copy the method in the bottom of your controller and also use CSV as written:-
class ArticlesController < ApplicationController
require 'fastercsv'
......
.
.
.
def show_users
@users = User.find(:all)
stream_csv do |csv|
csv << ["Show all the users in excel"]
csv << [""]
csv << ["ID" ,"Name" ,"Address" ,"Email"]
@users.each do |u|
csv << [u.id, u.name, u.address, u.email]
end
end
end
private
def stream_csv
filename = action_name + ".csv"
#this is required if you want this to work with IE
if request.env['HTTP_USER_AGENT'] =~ /msie/i
headers['Pragma'] = 'public'
headers["Content-type"] = "text/plain"
headers['Cache-Control'] = 'no-cache, must-revalidate, post-check=0, pre-check=0'
headers['Content-Disposition'] = "attachment; filename=\"#{filename}\""
headers['Expires'] = "0"
else
headers["Content-Type"] ||= 'text/csv'
headers["Content-Disposition"] = "attachment; filename=\"#{filename}\""
end
render :text => Proc.new { |response, output|
csv = FasterCSV.new(output, :row_sep => "\r\n")
yield csv
}
end
end
and its done. You have exported data to excel sheet .