Rubyからスプレッドシートファイルを読み込む

RubyのCSVライブラリは非常に使いやすい。速い、確実、高機能。 てことで、色々なデータをCSVに落として読ませていたが、 (LO/OOo)Calcで編集したものをCSVにするときは、「保存」でやらねばならんので ODSとCSV両方に書き出すのが面倒だなあ……、と思っていて 「だったらODSファイルを直接読めばいいじゃないの」と思って調べたら まあそりゃあるわなあ。

表をスライスしたり転置させたりする機能が充実してる分 いったんodsで開いてすぐCSVオブジェクトに直しちゃった方が 使いやすいかな。つまりこんな感じ。

require 'csv'
data = CSV.read('file.csv')

のようにしている部分を以下のようにするだけでよい。

require 'csv'
require 'roo'
data = CSV.read(Roo::OpenOffice.new('file.ods').to_csv)

簡単。ODSにすると人間が入力セルをずらしちゃう可能性がある。 そういう場合は特定のセルにラベルをつけておいて label メソッドで番地を知るとよい。