エクセルデータをCSVに落とす

エクセルの表をプログラムから参照したいと言うことはよくある。いろいろとやり方はあるみたいだけど、一番単純そうなのは xlhtml というツールなのかな。

http://chicago.sourceforge.net/xlhtml/ からダウンロードできる。ソースから作る場合はconfigure して make install だ。
ただ私はx86_64環境のためconfigureがこけてしまった。

./configure
checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
configure: error: /bin/sh ./config.sub x86_64-unknown-linux-gnu failed

そこで

./configure --build=x86-unknown-linux-gnu

としたら無事に通った。めでたい。

xlhtml -csv hoge.xls > hoge.csv

とすればCSV形式で出力可能だ。後は好きなように調理すればいい。


ただこのデータをlinuxなどで扱う場合は日付形式の扱いが面倒かもしれない。unix時間は1970-1-1からの経過秒数で表されるのに対して、エクセルでは一日ごとに増加する整数で日付を表し、時刻を少数で表すからだ。
とりあえず時刻については気にしないことにすれば、以下のようなスクリプトでエクセル日付をunixで扱える文字列に変換できるので、まあいいか。

#!/usr/local/bin/ruby

day = Time.at((ARGV[0].to_i-25569)*24*60*60-9*60*60)
p day