2008-11-22[n年前へ]
■RubyにおけるExcelファイル読み込み方法
ParseExcelを使った「RubyにおけるExcelファイル読み込み方法」
インストール gem install parseexcel 利用例 require 'parseexcel' workbook = Spreadsheet::!ParseExcel.parse(file_path) worksheet = workbook.worksheet(sheet_name, 'Shift_JIS') record = Array.new
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(とユーザ名・パスワード)の設定をしておかなければ、インストール作業ができないことも多いかもしれない。
それにしても、エクセルは本当に黒魔術だと思う。しかも、強力極まりない黒魔術である。色んなことが簡単にできるがゆえに、実に色々な状況で使われる。本当に役立つことが多いのも、否定のできない事実である。しかし、とてつもなく時間を浪費する輩なのである。