AXLSX gem is one the most recommended gem for the creating excel file in rails application.
To integrate AXLSX gem, we have following steps.
first we need to insert gem in our gemfile
 
gem 'axlsx_rails'
and run
bundle install
Now we need to create data which we want to export in Excel file
First we need to call the Axlsx package
excel_package = Axlsx::Package.new
Now, we will create a worksheet.
excel_package.workbook.add_worksheet(name: "sample worksheet") do |worksheet|
    worksheet.add_row["Name", "Age", "Occupation"]
    worksheet.add_row["Bruce", "25", "Architect"]
    worksheet.add_row["Willis", "19", "Graduate"]
    worksheet.add_row["Mel", "21", "Ruby on Rails Developer"]
    worksheet.add_row["Alex", "23", "Banker"]
end
Now, we need to insert it in a xlsx file
file = File.new("/home/document/sample.xlsx",  "w+")
excel_package.serialize file
send_file file
file.close()
In the above code, first we have created a new file.
then, insert the package into the file.
This is how our sheet looks like

The above excel file is for static data.
Axlsx give us the privilege of creating excel sheet with dynamic data enhanced with colors, bars, pie-chart and many more.
def index
	@users = User.all
	respond_to do |format| 
		format.xlsx do 
			excel_package = Axlsx::Package.new
			style = excel_package.workbook.styles
			highlight_cell = style.add_style bg_color: "45808c",fg_color: "FFFFFF",alignment: { horizontal: :center }, :b => true
			heading_cell = style.add_style bg_color: cyan, fg_color: "45808c",:b => true
			article_cell = style.add_style fg_color: "45808c",:b => true
			@users.each do |user|
				excel_package.workbook.add_worksheet(name: user.first_name.capitalize) do |worksheet|
					worksheet.add_row["","Articles",""], :style=>highlight_cell
					worksheet.add_row["Title","Body","Tags"], :style=>heading_cell
					user.articles.each do |article|
						tags = []
						article.tags.each do |tag|
							tags.push(tag.tag_name)
						end
						worksheet.add_row [article.title, article.body, tags.join(',')], :style=>article_cell
					end
				end
			end
			excel_package.workbook.add_worksheet(name: "sample Pie chart") do |sheet|
				sheet.add_row ["Total count",""], :style=> heading_color
			    sheet.add_row ["Total Articles", Article.count], :style=>highlight_cell
			    sheet.add_row ["Total Comments", Comment.count], :style=>highlight_cell
			    sheet.add_row ["Total Users", @users.count], :style=>highlight_cell
				sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,5], :end_at => [10, 20], :title => "Pie Chart") do |chart|
			      chart.add_series :data => sheet["B2:B4"], :labels => sheet["A2:A4"],  :colors => ['6cccc9', 'ed6f26', '8fdb9d']
			    end
			end
			path = "#{Rails.root}/public"
			file = File.new("#{path}/sample.xlsx",  "w+")
			excel_package.serialize file
			send_file file
			file.close()
		end
    end
end
Sample look of new Excel file

 
and with Charts

                       
                    
0 Comment(s)