rubyでEXCEL

もちろんWin32 OLEとかを使う方法もあるけど、それ以外にもいろいろライブラリはある。
https://rubygems.org/search?utf8=%E2%9C%93&query=excel

先頭のparseexcelは今はspreadsheetになっている。

gem xlsx? 書き込み? 備考
spreadsheet NG OK 読み書きできて実装も良さげ
roo OK NG 日本語読むのはOK。実装がイマイチな噂あり


あと、 rubyじゃないけど、 libxlsっていうのもある。
http://libxls.sourceforge.net/

コレ使ったgemとかあった気がしたんだけど見つからんかった。

spreadsheet試してみたけど・・・

Spreadsheet.open "/path/to/file.xls"

で、結合とか何もない50KくらいのEXCELファイルをMacで開いてみたけど、ループしてるのか帰ってこない。泣ける。

spreadsheet動いた

Spreadsheet.open "/path/to/file.xls"

っていうのは実はirbで確かめていたんだけど、正確にはopenメソッドが帰ってこないんじゃなくて、irbに結果を出力されるために自動的に呼び出されるinspectメソッドが帰ってこないことが判明。

だからirbで試す場合こんな感じでやるべし。

$ irb -rspreadsheet
1.9.3-head :001 > book = Spreadsheet.open "tmp/atsumeyo-ze.xls"; nil
 => nil 
1.9.3-head :002 > book.class
 => Spreadsheet::Excel::Workbook 

bookのinspectが実行されないように、 ;nil をつけないとダメ。

spreadsheetで読み込みできることは確認できました。


spreadsheetで変更すると壊れる

既存の.xlsファイルを開いて既存のシートの既存のセルを上書きしたり、シートを追加してみたりしましたが、データが壊れてしまうようです・・・。残念。