2011-04-27
_ Win32OLEを利用して多言語が記述された Excel ファイルを読み書きする
Web ページを多言語対応させるために,数十言語の翻訳データを Excel で渡されて,これをプロパティファイルに書き換える必要がでてきた.単純にコピペするというのは,いくらなんでも非効率すぎるので,Win32OLEを利用して Excel を読んでプロパティファイルを生成する変換ツールを作った.きっとコピペ作業ならつまらなさすぎて数日かかる作業が,変換ツールの作成数時間のみでできるんだから,やらない手はない.きっと Excel のマクロとか使えればいいんだろうけど,それよりも普段使い慣れている言語のほうが早く対応できるので,ここはやはりRubyで.
Rubyist Magazine - Win32OLE 活用法 【第 2 回】 Excelを参考に,Excelからの読み込みも問題なくできたし,ファイルへの書き出しも特に問題なくできた.ただ書き出したテキストファイルの一部が"?"になって文字化けしている.文字コードまわりというのはすぐさまピンときて,レファレンスなどを見てみると WIN32OLE.codepage を設定する必要があることがわかった.そこで,UTF-8で文字列を受け取るように以下のように記述しておくと,出力するテキストデータも正しく書きだされることが確認できた.
WIN32OLE.codepage = WIN32OLE::CP_UTF8
Excel を表計算として使っていないときは,こういう手が使いやすいのでいいけど,Excel 方眼紙とかになってたらさすがにしんどそうだな.