Low commit activity in last 3 years
No release in over a year
Allows you to program spreadsheets using .rxls views
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme
excel_rails
=================

A Rails plugin to generate xls documents by using rxls templates.

Based on Defv's railsxls plugin (http://github.com/DefV/railsxls) without the Java part.

Also inspired heavily from prawn_rails gem (http://github.com/Volundr/prawn-rails).

The gem has a new cool feature which lets you pick a hand-crafted excel file as a template in your
view. Pass the path to your excel template using the :template_path option and instead of creating
a blank spreadsheet for you to fill, your excel file will be parsed and yielded for you to fill in the blank.
Thanks to Stepan Filatov @ https://github.com/sfilatov

Installation
============

Note that this gem works only with Rails 3

Put the following line in your Gemfile
gem 'excel_rails'

Run 'bundle install'

Name your views as action.xls.rxls (See below for usage)

Make a request to your application with .xls extension to respond to excel.

Dependencies
============

ruby-ole
spreadsheet
iconv

Example
=======

Example spreadsheet usage as found here: http://github.com/jacobat/ruby-spreadsheet

-- in the view "index.xls.rxls"

excel_document(:filename => "all_lines.xls") do |workbook|
  sheet = workbook.create_worksheet
  sheet.name = "What's in a name"

  sheet.row(0).concat %w{Name Country Acknowlegement}
  sheet[1,0] = 'Japan'
  row = sheet.row(1)
  row.push 'Creator of Ruby'
  row.unshift 'Yukihiro Matsumoto'
  sheet.row(2).replace [ 'Daniel J. Berger', 'U.S.A.',
                         'Author of original code for Spreadsheet::Excel' ]
  sheet.row(3).push 'Charles Lowe', 'Author of the ruby-ole Library'
  sheet.row(3).insert 1, 'Unknown'
  sheet.update_row 4, 'Hannes Wyss', 'Switzerland', 'Author'

  sheet.row(0).height = 18

  format = Spreadsheet::Format.new :color => :blue,
                                   :weight => :bold,
                                   :size => 18
  sheet.row(0).default_format = format

  bold = Spreadsheet::Format.new :weight => :bold
  4.times do |x| sheet.row(x + 1).set_format(0, bold) end
end

In the above file excel_document yields a new Spreadsheet:Workbook object to the block.
If you provide a :filename option to the excel_document method, a filename will be provided to the downloaded file.
If your browser supports it you can inline the excel document as well.

If you provide :template_path - path to existed xls file, workbook will be loaded from the file.

excel_document(:filename => "report.xls", :template_path => "/tmp/report_template.xls") do |workbook|
    sheet = workbook.worksheet 0
    ... # any staff form previous example
end

If you provide a :renderer option to the excel_document method, you can use your customized Spreadsheet::Workbook to create a new excel file.

Your view "index.xls.rxls" file could look like this:

excel_document(:filename => "foobar.xls", :renderer => Spreadsheet::CustomWorkbook) do |workbook|
  workbook.new_worksheet("#{t_model(Product)}")
end

And the renderer class ("lib/spreadsheet"):

module Spreadsheet
  class CustomWorkbook < Spreadsheet::Workbook

    attr_accessor :sheet

    def new_worksheet
      @sheet = workbook.create_worksheet
      @sheet.name = "What's in a name"
    end
  end 
end

-- in the controller

def index
  @lines = Line.find(:all)

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @lines }
    format.xls
  end
end


Copyright (c) 2010 Aditya Sanghi, released under the MIT license