RubyでExcelファイルからデータを取り出す

よく、マスターデータを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

こんな感じです。