Hatena::ブログ(Diary)

u-ichiのにっき このページをアンテナに追加 RSSフィード

08年06月05日(木)

RubyにおけるExcelファイル読み込み方法

XLSデータを読み込むためには、Win32APIを使う方法もあるけれど、それだとWindows環境以外だと動かないので、最初からこっちで実装しておいたほうがよさげ。

gem使えたら普通にどの環境でも使えます。

ParseExcel

http://www.weheartcode.com/2007/10/05/reading-an-excel-file-with-ruby

インストール

gem install parseexcel

利用例

 require 'parseexcel'

 workbook = Spreadsheet::!ParseExcel.parse(file_path)

 worksheet = workbook.worksheet(sheet_name, 'Shift_JIS')

 record = Array.new

 worksheet.each do |row|
   record_row = Array.new
   row.each do |cell|
     record_row.push cell.to_s('UTF-8')
   end
   record.push record_row
 end
   
 return record

これで、読み込んだexcelファイルを配列にして取り出せる。

補足

workbook.worksheet(sheet_name, 'Shift_JIS')
  • workbook.worksheet(0) で1番目のシートを開くことができる。
  skip = 1
  worksheet.each(skip)
  • skip分行をシフトしてからeach処理。カラム行を読み込ませないときなどに利用。
cell = row.at(index)
  • index番目のcellを返す。
str = cell.to_s('UTF-8')
int = cell.to_i
float = cell.to_f
date = cell.date
  • それぞれの型で返す。cellには元データの書式から判別されたデータが格納されているので、日付の文字列が欲しい場合、cell.date.to_s とする。
  • 元のセルデータが空だと、nilが返ってくるので、nil処理が必要。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

2003 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2005 | 02 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2006 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2007 | 07 | 08 | 11 | 12 |
2008 | 02 | 05 | 06 | 07 | 08 | 09 | 10 |
2009 | 01 | 02 | 07 | 08 |
2011 | 11 |