Excel ファイルの内容を Ruby を使って高速取得する
Rails には直接関係ない小ネタをひとつ。
Excel の中身を Ruby のプログラムから参照したいことがある。これは、次のように実現できる。win32/clipboard と win32ole という2つのライブラリを使う。
require 'rubygems' require "win32/clipboard" require 'win32ole' excel = WIN32OLE.new('Excel.Application') excel.visible = false excel.displayAlerts = false excel.workbooks.open 'filename' => 'C:\test1.xls' workbook = excel.workbooks(1) sheet = workbook.sheets(1) sheet.select excel.cells.select excel.selection.copy s = Win32::Clipboard.data excel.quit puts s #=> C:\test1.xls の最初のシートの中身が出力される。
単にシート全体をクリップボードにコピーし、その内容を取得しているだけ。どのように出力されるかというと、
| A B ----------- 1 | a b 2 | c d
という Excel シートの場合は、
a\tb\r\n c\t\d\r\n
となる。改行コードが \r\n で区切り文字がタブというわけだ。
注意
もしなければ win32-clipboard という gem をあらかじめ入れておくこと。
% gem install win32-clipboard