よく、マスターデータをExcelで管理してプログラムで一気にImportする、というようなことをするので、RubyからExcelファイルのデータを取り出す方法をまとめます。
spreadsheetを使用する
spreadsheetというgemが公開されているので、こちらを使用します。
https://rubygems.org/gems/spreadsheet
インストール
gem install spreadsheet
使い方
データを読み込むだけなら簡単です。
# Excelファイルを読み込む book = Spreadsheet.open('./sample.xls', 'r') # 一枚目のシートを取得する sheet = book.worksheet(0) # シート名を指定してシートを取得する sheet = book.worksheet('sheet title') # 一行目の値を配列で取得する sheet.row(0) # 全ての行を配列で取得する sheet.rows # 行と列を指定して値を取得する sheet[row, col]
いつも使ってるやり方としては、rowsをeachでまわして値を取得してDBのInsert処理とかを行っています。
# ExcelシートからDBのデータを作成する sheet.rows.each do |row| Hoge.create!( title: row[0], description: row[1] ) end
こんな感じです。