« 大人の科学マガジンVol.09 | トップページ | 確かにまんま同じ »

xlsgrep の捕捉(いまさら)

 [ つらつらぐさ: Ruby で Excel を grep その2 ]

 久しぶりに読んでみると、説明らしい説明はないので自分でもツボにはまってしまったので、きちんと注意点は書いておくとしよう。本来なら修正すればよいのだけれど、どうせ自分で使うくらいなので、自分へのメモ代わりに。

 Ruby にパスが通ってさえいれば、カレントのディレクトリはどこでもよいけれど、検索すべきエクセルファイルはフルパスで指定しないとエラーになってしまう。スクリプトファイルを置いているディレクトリにカレントを移動しておいてというのが面倒がないか。もちろんエクセルファイルのディレクトリに置いておいて、そこをカレントにしてもよい。ただ、この場合でも検索するエクセルファイルの指定はフルパスで。

 c>ruby xlsgrep.rb 'ルビー' c:\data\excel\*.xls

 といった感じ。

 また、万一エラーが出てしまった場合、一時ファイルを置いているディレクトリの始末をしないので、これをいったん削除しないと継続できなくなる。標準では c:\rtemp としているので、

 c>rd c:\rtemp

 とでもして削除してから再実行。
 一時ファイルのディレクトリはどこを指定してもよいのだけれど、見つけやすいかなということでここではルートに置いてある。

 で、なぜそんな一時ファイルを使うかというと、エクセルのデータを行単位で見ていくことは可能なのだけれど、データの終わりをどう判断させるかが難しかったから。空行が続けばそれをデータの終わりと判断するというわけにもいかない。表のレイアウトの都合で何行か離れたところにデータを置くというのは充分にある使い方だから。

 ところがエクセルにテキストファイルとして出力させると、データ部分だけをファイルにしてくれるのを利用。このためいったん保存しておいてから検索作業をすることにした。最後にこのフォルダを削除しておしまい。

 また、「ビール」と「発泡酒」とで検索したいといった時には、

 c>ruby xlsgrep.rb "ビール|発泡酒" c:\data\excel\*.xls

 といった具合に( " )で囲う必要があるよう。

≫つらつらぐさ: Ruby で Excel を grep
≫つらつらぐさ: Ruby で Excel を grep その2
≫つらつらぐさ: excel ファイルを grep する(3)


追記:2014/07/29
 Excel2007 以降の xlsx ファイルを検索するのであれば、こちらをご参照ください。

|

« 大人の科学マガジンVol.09 | トップページ | 確かにまんま同じ »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: xlsgrep の捕捉(いまさら):

« 大人の科学マガジンVol.09 | トップページ | 確かにまんま同じ »