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を制御するスクリプトを書きやすくするライブラリである。

ダウンロード

インストール方法

ドキュメント

RubydeExcelの使い方の説明。

サンプル

RubydeExcelを使ったサンプルスクリプトです。

ライセンス

ライセンスは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.

免責事項

本プログラムは無保証です。作者は、プログラム自身のバグ、あるいは、本プログラムの実行など から発生するいかなる損害に対しても責任を持ちません。

変更履歴

2004/1/7

Ver1.01リリース

2003/12/28

Initial Release

その他

このライブラリの開発にはRubyによるWin32OLEプログラミングの 記載を参考にさせてもらいました。

特に、FileSystemObjectを使うアイデアや定数ロードを複数回発生させないアイデアは非常に参考になりました。


戻る