LoginSignup
3
3

More than 3 years have passed since last update.

Roo / Ruby on Rails Gem 日本語訳(1)

Last updated at Posted at 2021-03-26

今回実務で扱ったRubyonRailのGemRooについてまとめました。
ソースコード: https://github.com/roo-rb/roo

今回の投稿の続きはこちらです。
Roo / Ruby on Rails Gem 日本語訳(2)

投稿動機

→実務で扱ったGemを復習する
→Githubなどのソースコードにビビらないようになりたい
→将来実務で英語を使いたいので、そのポートフォリオの一環として作成したい

また、最後にも記載しますが著作権に関して疎いので、この記事が著作権違反にあたらないと認識して投稿しています。
なので、著作権を侵害するつもりもありませんし、もし著作権違反になるようであればすぐにこの投稿を削除します。

I will mention at the end, I am not familiar with copyright, so I am posting this article recognizing that it does not violate copyright.
So I don't intend to infringe copyright, and if it does, I'll delete this post immediately.

Roo

Rooは一般的なスプレッドシートに対して使用できます。
・Excelファイル 2007 - 2013(xlsx, xlsm)
・LibreOffice / OpenOffice.org ファイル (ods)
・CSVファイル

Excelファイル 97, Excelファイル 2002 XML, Excelファイル 2003 XMLの場合
roo-xls(xls, xml)

グーグルスプレッドシートの読み書きする場合
roo-google

インストール

Gemをインストールするには,

$ gem install roo

もしくは、Gemfileに追加してください。

Gemfile
gem "roo", "~> 2.8.0"

使い方

スプレッドシートを開きます

require 'roo'

xlsx = Roo::Spreadsheet.open('./new_prices.xlsx')
xlsx = Roo::Excelx.new("./new_prices.xlsx")

#扱うスプレッドシートが曖昧な場合`extension:`を使いましょう
xlsx = Roo::Spreadsheet.open('./rails_temp_upload', extension: :xlsx)

xlsx.info
# => スプレッドシートのデータが帰ってきます

Roo::Spreadsheet.openではパスでもファイルの名前でもどちらでも使えます。

シートの操作

ods.sheets
# => ['Info', 'Sheet 2', 'Sheet 3']   # シート内にある配列

ods.sheet('Info').row(1)
ods.sheet(0).row(1)

# `ods.default_sheet`に配列の最後を入れる場合
ods.default_sheet = ods.sheets.last
ods.default_sheet = ods.sheets[2]
ods.default_sheet = 'Sheet 3'

# each文を使って繰り返し処理をする場合
ods.each_with_pagename do |name, sheet|
  p sheet.row(1)
end

rowscolumnsにアクセス

Rooはエクセルの列や行に番号をつけて使います。
なので、1が最初のインデックスで、配列のように0ではありません

sheet.row(1)
# シートの最初の行(row)が帰ってきます。

sheet.column(1)
# シートの最初の列(columun)が帰ってきます。

ほとんどのメソッドがシートの引数を用いています。
もしパラメーターを省略するなら、下記のように便利なメソッドを使用します。

sheet.first_row(sheet.sheets[0])
# => 1             # 1番目の行
sheet.last_row
# => 42            # 最後の行
sheet.first_column
# => 1             # 最初の列
sheet.last_column
# => 10            # 最後の列

cellにアクセス

下記の方法でシートの一番左上のcellにアクセスできます。

sheet.cell(1,1)
sheet.cell('A',1)
sheet.cell(1,'A')
sheet.a1

今回はここまでです。
続きはこちらです。
Roo / Ruby on Rails Gem 日本語訳(2)

最後に

著作権に関して疎いので、この記事が著作権違反にあたらないと認識して投稿しています。
なので、著作権を侵害するつもりもありませんし、もし著作権違反になるようであればすぐにこの投稿を削除します。

I am not familiar with copyright, so I am posting this article recognizing that it does not violate copyright.
So I don't intend to infringe copyright, and if it does, I'll delete this post immediately.

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3