Rubyでxls(Excelファイル)を簡単にパースする方法
すごく簡単でドキュメント通りな内容なのですが、非常に便利だったのでメモ。
その名もSpreadsheetというgemを使います。 https://github.com/zdavatz/spreadsheet/blob/master/GUIDE.md
# Gemfile gem 'spreadsheet'
# vim hoge.rb Spreadsheet.client_encoding = 'UTF-8' book = Spreadsheet.open '/path/to/an/excel-file.xls' sheet1 = book.worksheet 0 # スプレッドシートの1枚目を指定 sheet1.each do |row| # do something interesting with a row end
たったこれだけです!超簡単! 配列でrowの部分にデータが入ってくるので扱いやすくてよいです。
スプレッドシートの指定の仕方はindexで指定しているのですが(なので2枚目だと1を指定すればよいです)、シート名をそのまま書いても大丈夫なようです。(ex. sheet1 = book.worksheet 'Sheet1')
また、Spreadsheet.open部分はRailsの場合だとexpand_pathとか使えなくてめんどくさそうと思ったのですが、普通にアプリルートからのパスで通りました。
なのでbatchスクリプト内で実行する際は
book = Spreadsheet.open 'bin/batch/excel-file.xls'
などと書いておいて、コンソールから
$ rails r bin/batch/hoge.rb
で大丈夫です。