ライブラリ公開してみました
wrap_excelというライブラリを公開してみました。パチパチパチパチ!
何をしてくれるライブラリなのかというと
rubyのwin32oleでのexcel操作の部分をよりrubyっぽく、煩雑な部分を省いて書けるように頑張っています。
rubyでexcelを操作するっていうと今ではspreadsheetとかrooとかがありますが、win32oleが昔から使われていると思います。win32oleはCOMライブラリとの連携をしているライブラリなのでexcelで手作業で出来ることはほぼなんでも出来ると思います。windowsでexcelを操作するには一番安定しているライブラリだと思います。
しかし、COMライブラリをそのまま利用しているので、VBAを使ってる人にとっては使い易いんだけどそうでない人にとってはちょっと使い勝手が悪いような気がしています。
例えばこんな感じ。
app = WIN32OLE.new('Excel.Application') file_path = WIN32OLE.new('Scripting.FileSystemObject').GetAbsolutePathName('file_path') book = app.Workbooks.Open(file_path) # 何かする book.close app.Quit
各行を説明すると
エクセルを立ちあげて、win32ole的な絶対パスを取得して、ファイルをオープンして、クローズして、excelを終了する。
僕はこういうコードを何度も書いていて、
「Quitっていらなくね?」とか
「絶対パス取得ってexpand_pathじゃね?」とか
「そもそも絶対パス必要ならライブラリ側で対処して欲しいなぁ」とか
「メソッド名が大文字って無しじゃね?」とか
「ブロック使いたいー」とか
「rubyっぽくなくない?」って疑問やらもやもやがありました。
そこでwrap_excelによってこれらを解消して
book = WrapExcel::Book.open('file path') # 何かする book.close # ブロックも利用可能 WrapExcel::Book.open('file path') do |book| # 何かする end
と出来るようにしてみました。
RubyistsってMacユーザが圧倒的に多いし、excel使わんよー(僕もそうしたいです)とか、spreadsheetライブラリならunixでもmacでも使えるじゃーんとか潜在的なユーザ数が圧倒的に少ないと思われるのですが、windowsを利用していてrubyでexcelオートメーションスクリプトを書いている人は冷やかし半分で使ってみてください。
「だめじゃーん」とかツッコミ教えてください。
ソースコードはこちらから
https://github.com/tomiacannondale/wrap_excel
readmeはgoogle翻訳使いまくりの変な英語になっていますので、日本語がわかる方はREADME.ja.rdocを見ていただければありがたいです。