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 ファイルを検索するのであれば、こちらをご参照ください。
| 固定リンク
コメント