Edited at

Excel for Mac(15.31)のCSV保存方法は二種類ある!

More than 1 year has passed since last update.

株式会社オークファンの佐藤です。

どういうわけか社内エンジニアのHHKB率が増えてきた、今日このごろです。


CSVのエクスポートで困る

Excel for Macのxlsxシートを「名前をつけて保存」すると出力されるCSVが、なぜかBOMつきUTF-8、改行コードもCRになってしまいます。

他の人は普通にCR+LFで出力できるのになぜ?と思って、エクスポート時の文字コード・改行コードを調べてみたところ、ExcelからのCSV保存方法は二種類あることが判明しました!


保存オプション

この中に「CSV」が二種類あるのにお気づきでしょうか? 

excel-expoprt.png

ダイアログ
文字コード
改行コード

CSV UTF-8(カンマ区切り) (.csv)
UTF-8 (with BOM)
CR

CSV(コンマ区切り) (.csv)
特に指定なし?
CRLF

Excel for Macのバージョンによっては、「UTF-8」の項目がない場合もあるようです。

CSVをExcelを開くと文字化けする問題に対応するために、UTF-8のエクスポートをつけたのでしょう。

「CSV」という文字だけで選ぶと、つい上にあるUTF-8にしてしまいますが、よりにもよってBOMありなので、先頭行を読み込む際にシステムのエラーチェックに引っかかることがあります。

(´-`).。oO(あと、コンマとカンマが並んでいるのが気になりますね……)


文字コードを確認するコマンド

生成されたファイルの形式は、コマンドで確認できます。


csv.sh

# 「CSV UTF-8(カンマ区切り)」 = BOMを入れるため、間違いなくUTF-8として解釈

$ find bom.csv | xargs file
./bom.csv: UTF-8 Unicode (with BOM) text, with no line terminators

# 「CSV(コンマ区切り)」 = BOMを入れないため、内容で文字コード解釈される
# ASCII文字しか入っていない場合
$ find bills.csv | xargs file
./bills.csv: ASCII text, with CRLF line terminators

# ASCII文字以外が入っている場合
$ find japanese.csv | xargs file
./japanese.csv: Non-ISO extended-ASCII text, with no line terminators


Excelから出力するCSVを使うときには、気にしておくといいと思います。


まとめ

(´-`).。oO(手順書に記載する際は気をつけてください……)