RubyでExcelファイルなどを操作できることを知りました。ということで,情報処理技術者試験の各都道府県別の合格者数を集計するものを作ってみました。
以下を参考にしました。
使い方は,以下のとおりです。
- http://www.jitec.jp/1_07toukei/_index_toukei.html から勤務先別一覧のExcelファイルをダウンロードする。
- 基本情報技術者試験の高校生の各都道府県の合格状況は"AZ45"のセルを集計すれば良いので,以下のように実行する。-c がセルを指定するオプションです。
- ruby ipa_toukei.rb -c az45 kimusaki_19a_adfe.xls
# # Usage: ruby ipa_toukei.rb -c az45 kimusaki_19a_adfe.xls # require 'win32ole' require 'optparse' $KCODE = "SJIS" def getAbsolutePath(filename) fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.GetAbsolutePathName(filename) end def openExcelWorkbook(filename) filename = getAbsolutePath(filename) xl = WIN32OLE.new('Excel.Application') xl.Visible = false book = xl.Workbooks.Open({'filename'=> filename, 'readOnly' => true}) begin yield book ensure xl.Workbooks.Close xl.Quit end end ### Main cell = nil opt = OptionParser.new opt.on("-c String") {|v| cell = v} file = opt.parse!(ARGV).shift hash = Hash.new openExcelWorkbook(file) do |book| book.Worksheets.each do |sheet| next if sheet.name == '全国' hash[sheet.name] = sheet.Range(cell).Value.to_i end end hash.sort{|a, b| b[1] <=> a[1]}.each do |elem| printf("%5d %s\n", elem[1], elem[0]) end
以下が実行例です。
34 愛知県 31 静岡県 23 岐阜県 21 新潟県 17 埼玉県 14 宮城県 13 宮崎県 13 佐賀県 11 鹿児島県 10 群馬県 …(以下省略)