カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

Microsoft ExcelとCSV(タブ区切り)

概要

あるバージョンのMicrosoft ExcelでUTF16エンコードCSVファイルを読み込むときはタブ区切りにする。カンマ区切りはカンマが区切りと認識されない。

経緯と解決策

あるバージョンのMicrosoft ExcelでUTF16形式のCSVを読み込むとき、二重引用符で囲ってカンマ','で区切ったCSV(改行コード"¥r¥n")が潰れて読み込まれました。具体的には各行が左端の列に読み込まれて以下の状態になりました。

A B C
1 A,"B","C"
2 A,"B","C"
3 A,"B","C"

この問題は区切り文字をカンマからタブに変えることで解決できます。この場合、各値はタブ'¥t'を含むことができないので予め半角スペース' '等に変換します。また、文字列値にも二重引用符は不要となります(要確認)。

なお、既に作成したカンマ区切りのCSVExcelで読み込むには貼り付けポップアップニューのテキスト ファイル ウィザードでカンマ区切りを指定することにより読み込み可能です。

Excelだけを使っている限りは気付かないのですが、Python等でCSVを出力する場合は注意が必要となります。

背景

CSVはComma Separated Valueの略語(頭字語)ですが、同時にCharacter Separated Valueの略語でもあります。詳細は調べきれていませんが、エクセルでCSVをタブ区切りとして扱う背景には上記の事情があるそうです。

補足

タブ区切りのテキストファイルを特にTSVと呼ぶ場合もあるそうです。