RubyでExcel
概要
会社では何かとExcelを使う羽目になる。ソフトのチェックシートを作ることもあるし、何かの集計結果を別の人に渡すときにはExcelでの提出が要求される。
といっても、Excel上で手入力でデータを入れるのは避けたほうがよい。そんなことをしてしまうと、後でデザインを変えなきゃいけなくなったときに 地獄を見ることになる。
そういう自体を避けるために、ExcelにもVisual Basicでデータの入力などを自動化する機構があるが、いかんせん言語がVisual Basicである。 VBでのプログラミングはあまり幸せとは思えない。
WIN32OLEを使うと、RubyからExcelの各オブジェクトにアクセスできるため、RubyでExcelを自由自在にコントロールできる。 これなら、楽しくプログラミングできるというものだ。例えば、以下のコードは1番目のワークシートのB5セルに"Hello"と書くスクリプト。
require 'win32ole'
excel = WIN32OLE.new('EXCEL.Application')
excel.visible = true
book = excel.workbooks.add('c:\temp\test.xls')
sheet = book.worksheets.item(1)
range = sheet.range("B5")
range.value = "Hello"
しかし、Excelが提供するクラスにはWorkbook,Worksheet,Rangeなどいろいろあるが、 WIN32OLEで扱うオブジェクトはすべてWIN32OLEクラスになってしまう。 例えば、先のコード例ではbookはWorkbookオブジェクト、sheetはWorksheetオブジェクトを指している。 しかし、p bookとやっても、p sheetとやっても、#<WIN32OLE:xxxxx> と表示されるだけでちょっとさびしい。
できれば、"Worksheet:name='Sheet1'"のように表示させたいが、WIN32OLE#inspectを変更しても、そう簡単にはうまくいかない。
そこで、Excelの各クラスをラップするRubyのクラスを用意し、独自のメソッドを追加することで、Excelクラスを拡張した ような効果を得ることができる。そうすれば、さらに気持ちよくExcelの制御スクリプトを書けるようになる。
それが今回紹介するRubydeExcelというライブラリである。
Excelのクラスの説明
RubyからExcelを制御するには、Excelについてもある程度知っておく必要がある。 Excelが持つクラスやメソッドをどのように調べるか、説明しておく。
RubydeExcel の紹介
RubydeExcelはRubyからExcelを制御するスクリプトを書きやすくするライブラリである。
ダウンロード
インストール方法
- ダウンロードしたファイルを展開
- excel_lib.rb をRubyのライブラリフォルダか制御スクリプトと同じフォルダにコピー
ドキュメント
RubydeExcelの使い方の説明。
サンプル
RubydeExcelを使ったサンプルスクリプトです。
- シールラベルの印刷
- Excelでカレンダーを作る
- 複数のワークブックをまとめる
- ハイパーリンクで目次を作る
- 吹き出しの情報を得る
- ワークシートのソート
- ワークシートのデータを読み込む
- ワークブックにマクロを組み込む
ライセンス
ライセンスはRubyのライセンスに従います。
Copyright (C) 2003,2004 Oka Yasushi <yac@tech-notes.dyndns.org>
You may redistribute it and/or modify it under the same license terms as Ruby.
免責事項
本プログラムは無保証です。作者は、プログラム自身のバグ、あるいは、本プログラムの実行など から発生するいかなる損害に対しても責任を持ちません。
変更履歴
Ver1.01リリース
Initial Release
その他
このライブラリの開発にはRubyによるWin32OLEプログラミングの 記載を参考にさせてもらいました。
特に、FileSystemObjectを使うアイデアや定数ロードを複数回発生させないアイデアは非常に参考になりました。
戻る