Neat Spreadsheet

Simplify the task of building a spreadsheet in Rails. This gem is based on the Spreadsheet gem. The syntax have been simplified a bit.

Install

gem install neat-spreadsheet

Rails 3

In your Gemfile:

gem 'neat-spreadsheet'

Example

In your controller (app/controllers/products_controller.rb)

def index
  respond_to do |format|
    format.html
    format.xls { render xls: "filename" }
  end
end

In your RXLS view (app/views/products/index.rxls)

neat_spreadsheet workbook, title: 'Product Report', columns_width: [8, 25, 15, 15] do |sheet|
  sheet.row style: :h1 do |row|
    row.cell 'Product Report', colspan: 4
  end

  sheet.spacer

  sheet.row do |row|
    row.cell '2013-01-01'
    row.cell 'Apple'
    row.cell 4, align: :right
    row.cell 12.99, align: :right
  end
end

Usage

neat_spreadsheet (title, options={}, &block)

In your RXLS view, you can call the method neat_spreadsheet. You must pass the workbook object. You can also use those options :

| Options | Type | Description | | ————- |——–|——————————————————————-| | title | String | Title of the sheet | | column_width | Array | Size of each column. This will set the number of columns per row. |

This method takes a block and return a sheet object. Here’s a list of the methods available for the sheet object.

row (options={}, &block)

Create a new row in the sheet

| Name | Type | Description | | —————-|———|—————————————————————-| | Options | | height | Integer | Height of the row | | start_at_column | Integer | Position of the first column | | style | Symbol | Style of the content (h1 to h4, th, normal, small, tiny) |

cell (value, options={})

Set the content of a cell at the current row in the sheet

| Name | Type | Description | | —————–|———|—————————————————————| | value | Mixed | The content of the cell | | Options | | align | Symbol | left, right or center | | color | Symbol | Color of the text (white, black, red, etc…) | | colspan | Integer | The number of columns this cell take. | | pattern_fg_color | Symbol | Background color of the cell. Must set pattern to 1 | | size | Integer | Font size | | vertical_align | Symbol | top, bottom, middle | | weight | Symbol | :normal, :bold |

skip_cell

skip_cells (nb)

skip_row

spacer

Show a blank merged row.

Thanks

Thanks to github.com/10to1/spreadsheet_on_rails for the hooks with Rails.

Copyright © 2013 De Marque inc. See LICENSE for further details.