hirax.net::inside out::2009年08月17日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2009年7月 を読む << 2009年8月 を読む >> 2009年9月 を読む

2009-08-17[n年前へ]

エクセルという黒魔術 

 Excelは「スケッチブック」としては素晴らしい、と思っている。それほど複雑でない処理を、思いつくままに描くのには、とても素晴らしいソフトだと思う。

 しかし、それを「繰り返し」使おうと考えてしまったなら、いきなり、驚くほどの時間を消費するブラックホール・モドキに変わる。もっとも、浪費した時間に応じて、少しの結果を出してくれるところが、単なるブラックホールではない。だからこそ、たちが悪い。

 かといって、Excelと関わらないわけにはいかないことも多い。そんなときは、プログラミング言語を使って、エクセルファイルに対して処理を行うことになる。たとえば、Ruby で.xlsファイルを読むことができる"Parseexcel"のようなライブラリを使い、データ処理を行うことになる。

 たとえば、多数のエクセル(.xlsファイル)に対する処理をしなければならないことも多い。そんな時は、こんな具合のRubyスクリプトを書くことにしている。たとえば、これは、引数で渡したディレクトリ中にある.xlsファイルのB3セル(row.at(2) if line==3)の値をすべて足した結果を出力するスクリプトを、動作確認しないまま書いてみたものだ。

require 'parseexcel'

files=Dir::entries(ARGV[0])
files.delete_if!{|v|
 true unless /\.xls$/=v}
}
sum=0.0
files.each{|file|
  wb=Spreadsheet::ParseExcel.parse(file)
  ws=wb.worksheet(0)
  line=1
  ws.each{|row|
    sum+=row.at(2).to_f if line==3
    line+=1
  }
}
puts sum.to_s

 もちろん、"parseexcel"を使うためには、

gem install parseexcel
という具合でparseexcelライブラリをインストールしておく必要がある。また、企業内で使うような場合、つまり、Proxy内からインストールする場合には、
set http_proxy=http://proxy.hoge.co.jp:8080
set http_proxy_user=hoge
set http_proxy_pass=hoge
gem install parseexcel
 というように、Proxy(とユーザ名・パスワード)の設定をしておかなければ、インストール作業ができないことも多いかもしれない。

 それにしても、エクセルは本当に黒魔術だと思う。しかも、強力極まりない黒魔術である。色んなことが簡単にできるがゆえに、実に色々な状況で使われる。本当に役立つことが多いのも、否定のできない事実である。しかし、とてつもなく時間を浪費する輩なのである。