RubyでExcelの扱いは何度かしているがその都度忘れてしまう。
こちらが参考になる。
いつもならcsv書き出しは手作業ですることが多いが、gemを使ってやってみる。
rooは読み込みだけらしいが、今回の目的には十分なので試してみる。たぶん初めて使う。
こちらを参考にすすめ。
to_csvもあって便利じゃん
require 'roo' path = "Book1.xlsx" book = Roo::Excelx.new(path) sheet = book.sheet(0) csv = sheet.to_csv p csv
と思ったら、カンマで接続した文字列となっているだけでCSVオブジェクトになっていなかった。
このままファイルに保存するならこれで問題ないと思う。
"\"りんご\nApple\"\n\"ごりら\"\n\"らっぱ\"\n\"ばんだ\"\n\"だるま\"\n\"まろん\"\n"
今回は先頭に番号を付加したりしたいので、CSVオブジェクトを作る。
str = sheet.to_csv csv = CSV.new(str) dst = CSV.generate("") do |csv2| csv.each_with_index do |row, i| csv2.add_row [i + 1] + row end end p dst
CSV.generate("")の出力が文字列になっているというのを初めて知った。
いつもファイルにそのまま書き出していたので気づく機会がなかった。
番号が付加できた。
"1,\"りんご\nApple\"\n2,ごりら\n3,らっぱ\n4,ばんだ\n5,だるま\n6,まろん\n"
これからさらに加工したりするのでjsonに変換してごにょごにょするのがいいかな。