Spreadsheet::ParseExcel - Get information from an Excel file. Modifying to port font support
Pull request Compare This branch is 1 commit ahead, 8 commits behind pat:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Note by Pat: The original author has since merged this code into the spreadsheet gem. However, that's released as GPL, so I'm personally going to use this instead. It seems to do the job. Don't blame me for the old documentation though!

I'm using Bundler, so that makes it easy to refer to this repository instead of the existing gem.

  gem 'parseexcel',
    :git    => 'git://github.com/freelancing-god/parseexcel.git',
    :branch => 'master'

I don't maintain the gem, so if you want my changes, you're going to have to grab them from Github.

And below is the original instructions.

Spreadsheet::ParseExcel - Get information from an Excel file.
Version: 0.5.2
Date: 2007-07-19

Short Description:
Spreadsheet::ParseExcel allows you to get information out of a 
simple Excel file
This Package is an - as of today incomplete - translation of 
Kawai Takanoris Perl-Module.


  * ruby 1.8

  De-Compress archive and enter its top directory.
  Then type:

    $ ruby install.rb config
    $ ruby install.rb setup
   ($ su)
    # ruby install.rb install

  You can also install files into your favorite directory
  by supplying install.rb with some options. Try "ruby install.rb --help".
  More information can be found in the redistributed file usage-en.txt

#!/usr/bin/env ruby

require 'parseexcel'

# your first step is always reading in the file.
# that gives you a workbook-object, which has one or more worksheets,
# just like in Excel you have the possibility of multiple worksheets.
workbook = Spreadsheet::ParseExcel.parse(path_to_file)

# usually, you want the first worksheet:
worksheet = workbook.worksheet(0)

# now you can either iterate over all rows, skipping the first number of
# rows (in case you know they just contain column headers)
skip = 2
worksheet.each(skip) { |row|
  # a row is actually just an Array of Cells..
  first_cell = row.at(0)

  # how you get data out of the cell depends on what datatype you
  # expect:

  # if you expect a String, you can pass an encoding and (iconv
  # required) the content of the cell will be converted.
  str = row.at(1).to_s('latin1')

  # if you expect a Float:
  float = row.at(2).to_f

  # if you expect an Integer:
  int = row.at(3).to_i

  # if you expect a Date:
  date = row.at(4).date

  # ParseExcel makes a guess at what Datatype a cell has. At the moment,
        # possible values are: :date, :numeric, :text
        celltype = first_cell.type

# if you know exactly which row your data resides in, you may just
# retrieve that row, which is again simply an Array of Cells
row = worksheet.row(26)



URL: http://download.ywesee.com/parseexcel
Author: Hannes Wyss <hwyss@ywesee.com>