ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

RubyでExcelの扱い

RubyExcelの扱いは何度かしているがその都度忘れてしまう。

こちらが参考になる。

qiita.com

いつもならcsv書き出しは手作業ですることが多いが、gemを使ってやってみる。
rooは読み込みだけらしいが、今回の目的には十分なので試してみる。たぶん初めて使う。

こちらを参考にすすめ。

rooter.jp

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に変換してごにょごにょするのがいいかな。