Ruby で xlsx を編集する
Ruby で既存のエクセルファイルを編集したかったので試してみた。
Ruby でエクセルファイルを扱う手段(gem)はいくつかあるが今回は、
.xlsx
ファイルの読み込み.xlsx
ファイルの書き込み- セルの結合
を行いたかったので RubyXL
を使うことにした。
余談
最初は spreadsheet
を使おうと思って試してみたが、これは .xls
(.xlsx
ではない)しか読み書きが出来ないのでボツに。
次に .xlsx
が読み込める roo
を試してみたが、これも .xlsx
の読み込みはできるけど、書き込みが出来ないのでやっぱりボツに。
また axlsx
も使い勝手とかはよさそうだったが、これはファイルの読み込み自体が行えずに(ry。
このように Rubyge でエクセルを扱う gem はいくつか存在するが、全体的にかゆいところに手が届かない。
と、いうような問題を解決するためにエクセルを扱う gem の機能を共有した rrxcell
というものが存在しており、これであれば .xlsx
の読み書きを行うことが出来る。
しかし、残念ながら rrxcell
では『セルの結合』を行うことが出来なかったのであえなく撃沈した。
そういうわけで、今回は全ての条件を満たす RubyXL
を使うことにした。
インストール
$ gem install rubyXL
使い方
require "rubyXL" src = "test.xlsx" dest = "output.xlsx" # エクセルファイルの読み込み book = RubyXL::Parser.parse(src) # シートを取得 sheet = book[0] # シートのセルを結合する # 行3, 列 0 のセル位置 cell1 = [3, 0] # 行3, 列 1 のセル位置 cell2 = [3, 1] # cell1 と cell2 を結合する sheet.merge_cells *cell1, *cell2 # 以下と等価 # sheet.merge_cells 3, 0, 3, 1 # ファイルの保存 book.write(dest)
所感
とりあえず、やりたかったことは出来たので満足。