ruby-LEDの日記

2006-10-17

WIN32OLEExcelファイルから情報取得

#!/usr/bin/ruby -Ks

require 'win32ole'

#windowsパスの取得
def getAbsolutePath file
	fso = WIN32OLE.new('Scripting.FileSystemObject')
	fso.GetAbsolutePathName(file)
end

#セルの情報を取得
def getFuncData file
	file = getAbsolutePath(file)
#	$excel.visible = TRUE #動作確認時はコメントを外す
	book = $excel.Workbooks.Open(file)
	sheet = book.Worksheets(1)
	puts sheet.Range('C15').value
	book.Close
end

$excel = WIN32OLE.new('excel.Application')
ARGV.each{|file| #ファイルリストの受け取り
	if file.length > 0
		print file.sub(/\.xls/,"") + ","
		getFuncData(file)
	end
}
$excel.Quit

スクリプトを改造した

 ./script.rb *.xls

とできるように

その他気になる点の改造

22ループだと

real    0m10.515s
user    0m0.109s
sys     0m0.093s

もともとは

real    0m17.125s
user    0m0.124s
sys     0m0.155s

でも一番大きいのは実行時間じゃなくてメモリ

なので22ループで220MBとか使ってた

トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20061017