PythonスクリプトやEditorでcsvファイルを作成しExcelで読み込んだ際に、うまく解釈されないケースが出てきた。
いくつかパターンと原因があったので対処方法をメモ
文字コード
Windows製なのか、日本語OSだからなのかExcelでは文字コードをデフォルトだとShift-JISで解釈される。
一方で、スクリプトで直接記述やVSCode等のEditorでcsvを作成すると、UTF-8で作成されるケースが多い。
UTF-8でエンコードした状態だとShift-JISでは日本語は文字化けして解釈される。
Shift-JISにエンコードしなおしてもいいが、Excel上で大抵の文字コードはデコードできるので、Excel側で対応する。
1., Excel上で「ファイル」=>「インポート」を選択
Macの場合、デフォルトでは「Japanese (Mac OS )」となっており、プレビューをみても文字化けされている。
2., 元のファイルを「UTF-8」に変更する
文字化けが解消された。
改行コード
文字化けを解消しても以下のエラーが表示され正しくインポートできないケースがでてきた。
「このテキストファイルのデータは、1 つのワークシートに入りきりません。」
Excelの改行フォーマットがCRLFのため、他のフォーマット(LF)だと正しく解釈ができなくなるらしい。
これはExcel側で対応できないのでEditor側で対応する。
1., 改行フォーマットを確認する
大抵のEditorはファイルを読み込むと改行フォーマットがわかる。
VSCodeだと下部に表示。
2., 改行フォーマットを変更
これも大抵のEditorでは改行フォーマットをクリックすると選択できるので、CRLFに変更し保存。
Excelで読み込むと文字化けが解消された。
その他
LFは\n、CRLFは\r\nでコーディングされているので、直接ファイルの中身を置換してもいい気がする。
ExcelだとCRLFだが、LFで解釈するケースが多い。
改行フォーマットをLFにするかCRLFにするかは選ぶのは悩ましい。
コメント