図A●Excelファイルの操作におけるJavaとRubyの違い
図A●Excelファイルの操作におけるJavaとRubyの違い
[画像のクリックで拡大表示]
リストA●RubyでExcelファイルを読み込むプログラム
リストA●RubyでExcelファイルを読み込むプログラム
[画像のクリックで拡大表示]

 Java以外の例として、RubyによるExcelファイルの操作を見てみましょう。POIでのExcelファイルの操作は、Excel本体をインストールしていないパソコンでも可能でした。しかし、Rubyの場合は、Excelが必要になります。これは操作の方式が異なることが原因です。Rubyは、OLE(Object Linking and Embedding、オーレと読みます)というWindowsのAPIにアクセスする方式を採用しているため、そのAPIを通じて呼び出されるExcelが必要になるのです(図A)。

 まずは実際に、リスト1と同じ処理を実装してみます(リストA)。ちなみに、Javaと同様に例外処理を省いています。まず1行目で文字コードを指定しています。ここではシフトJISを指定しています。以降のプログラムはシフトJISでRubyを動かします、という宣言になります。

 (1)で、OLEにアクセスするためのモジュールを読み込んでいます。(2)で、実際にExcelを起動させています。(3)で、Excelの起動がわかりやすいように、Excelを画面に表示しています。ただし、表示が一瞬で消えてしまうのであまりよくわからないかもしれませんね。

 そして(4)で、実際のExcelのブックを開き、(5)で1シート目のC2セルを取得しています。POIではシート番号などが「0」で始まりましたが、Rubyでは「1」で始まりますので注意してください(RubyによるExcelの扱い方は、VBと同じだと考えてください)。(6)で内容を表示した後、(7)以降でExcelを閉じています。

 この程度の処理であれば、POIでもRubyでもあまり変わりませんね。Rubyだと実際にExcelを動かすので、処理の様子を(高速ですが)見ることができます。また、Rubyは実際にはOLEにアクセスしているだけなので、VBAの知識があるとRubyにおけるExcel操作に、勘が働くようになります。

 Java、Ruby、そしてVBAの、どれを使ってExcelを操作すべきかは、状況によって異なります。それぞれの言語でどのようにExcelファイルを扱えるのか、その特徴を押さえておくとよいでしょう。

この記事で紹介しているサンプルコードはこちらのページからダウンロードできます。
kikaineko
kikaineko 本名、伊尾木将之。大阪出身のうさぎ好き。最近、伊坂幸太郎氏が執筆した小説をよく読んでいます。癖のない村上春樹といった感じがして、結構好きです。何より、説教くさくないというか、メッセージ性をかなり落としてエンターテインメントに徹していることが素晴らしいと思っています!