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 メソッドで番地を知るとよい。