その他
    ホーム 技術発信 DoRuby 【roo】ExcelファイルをRailsで読み込む
    【roo】ExcelファイルをRailsで読み込む
     

    【roo】ExcelファイルをRailsで読み込む

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    今回は使っていて便利だった、excelを読み込むライブラリ【roo】について書きたいと思います。

    はじめに

     約10年ぶりぐらいにバッティングセンターに行ったらバットにボールがほとんど掠りもせずに全身筋肉痛になりました、むらさきです。
     今回は、.xlsxファイルから必要な情報を抜き出して使うことがあった時に利用したrooというライブラリについてまとめたいと思います。

    rooとは?

     rooとはスプレッドシートの読み込みができるライブラリです。.xlsや.xlsx、.odsや.csvなどに利用できます。google spreadsheetにも利用できるようです。
     読み込み専用で書き込みや新規作成等はできません。

    インストール方法

     rooのインストールは

     gem install roo

     で簡単に行えます。

    使ってみよう

    インストールが終わったので実際に使ってみましょう。
    今回は下のシートを使用します。rooは読み込み専用のライブラリなので、データを読み込んで表示させてみます。

    enter the description

    1.読み込みたいファイルを指定する

    require 'roo'
    
    xlsx = Roo::Excelx.new(file_path)
    

    .xlsxファイルを取得する際には上記のように読み込みたいファイルのパスを指定して書きます。
    .xlsxファイル以外の場合は

    Roo::Excel.new(file_path)             #.xlsファイル
    Roo::Csv.new(file_path)               #.csvファイル
    Roo::OpenOffice.new(file_path)        #.odsファイル
    

    と書く事で指定できます。

    2.使用するsheetを指定する

    xlsx.default_sheet = 'spices'
    xlsx.default_sheet = xlsx.sheets[0]
    

    直接sheet名を入力するか、sheetsの配列から指定するができます。

    3.指定したセルに入っているデータを表示する
    例として「ターメリック」と「シナモン」を取り出したいとします。
    「ターメリック」はシートの2行、2列目
    「シナモン」はシートの5行、2列目なので

    xlsx.cell(2,2)   #=> "ターメリック"
    xlsx.cell(5,2)   #=> "シナモン"
    

    とすることで取得できます。

    4.ループで取得する
    最後に、例として材料の名前だけをすべて表示します。

    2.upto(xlsx.last_row) do |row|  
      p xlsx.cell(row, 2)    #2列目を1行ずつ取得する
    end  #=> "ターメリック","ナツメグ","唐辛子","シナモン","クミン","コリアンダー"
    

    おわりに

    いかがだったでしょうか。読み込みだけですがとても簡単に扱える便利なライブラリでした。
    rooという名前だったのでシートにカレーのスパイスを使ったんですがスパイスを調べる際にセルフ飯テロをかましました。カレー食べたい。