Excelのcsv出力は手強い

最近の開発では、データのimportやexportの機能を付けて大量の入出力を処理しますよね。

で、exportはもちろんcsv形式それもtab区切りにすればデータ内にカンマが存在しても問題なく、excelでも何でも使って利用してくださいな・・・ってことです。(データ内にtabがいるハズもないように作ってありますから)

問題はimportなんですなぁ。相手がシステムであればキレイなcsvを吐き出してくれたりしますが、問題はexcelから吐き出したcsvなのです。(タブ区切りであろうがカンマ区切りであろうが)

セル内改行なんぞというワープロちっくなレイアウトのシートでは、吐き出すと行の途中で改行されちゃいます。その実態であるLF(chr[10])を置換から「Ctrl J」で指定することで回避できるとのことですが、これで致命的な途中改行はなくなりますが、吐き出してみるとソコココに区切りじゃないタブが連打されていたりします。(どうやらコイツらはセル内改行とは無関係な感じですが)

で、clean関数を使ってやればOKなのですが、これは関数なので定型業務ではマクロか何か噛ませてやらないと、運用担当者が大変になっちゃいそうですね。

ここまでヒィーヒィー言いながらも、進めて行っても、さらに、出力ファイルをチェックすると・・・。文字列部分がダブルクォーテーションで囲まれていたり、いなかったり?意地になって色々テストしてみました。

そしたらね。フツーの文字列はそのまま出力されるんですが、文字列の中に怪しいヤツ(例えば「,」「”」がいると、勝手にダブルクォーテーションで囲んでくれているようです。

データを活かすなら取り込み時の処理で囲まれてたらハズすようなコーディングをしなければいけませんね。データの整合がさほどシビアでなければexcelのうちに「、」「”」に置換するとかね。いずれにしても手間です。

もう、ウンザリですね。

Categories: MS-Office Tags:
  1. No comments yet.