Excel CSVと標準CSVの真の違いは何ですか?
たとえば、1つのセル内で改行のある列を処理する場合、それらをどのように異なる方法でエンコードしますか?
これは、「標準」CSVとして定義する内容に完全に依存します。私に関する限り、Excelは RFC 418 、「CSVファイルの一般的な形式とMIMEタイプ」で概説されているルールに従います。
最初の行の最初のセルに2つの改行があるテーブルを考えます。 Excelでは、次のようになります。
+---+---------------+------------+------------+
| | A | B | C |
+---+---------------+------------+------------+
| 1 | col1, line1a | | |
| | col1, line1b | | |
| | col1, line1c | col2, row1 | col3, row1 |
| 2 | col1, row2 | col2, row2 | col3, row2 |
+---+---------------+------------+------------+
では、Excelはこれをどのようにエクスポートしますか?見てみましょう–テキストエディタはこれを表示します:
"col1, line1a
col1, line1b
col1, line1c","col2, row1","col3, row1"
"col1, row2","col2, row2","col3, row2"
あまり洗練されていません。キャリッジリターン(16進0D
)改行がセルにあった場所。すべてのセルは二重引用符で囲まれています。また、実際の行はキャリッジリターンで区切られます。
これを正しく解析するために、CSVパーサーは
それができなかった場合、このような文字化けが発生します。これで、2行ではなく4行になることに注意してください改行を無視できませんでした。
+---+---------------+------------+------------+
| | A | B | C |
+---+---------------+------------+------------+
| 1 | "col1, line1a | | |
| 2 | col1, line1b | | |
| 3 | col1, line1c" | col2, row1 | col3, row1 |
| 4 | col1, row2 | col2, row2 | col3, row2 |
+---+---------------+------------+------------+
しかし、RFCが何を言っているか見てみましょう、多分Excelはそれを正しくしましたか?
改行(CRLF)、二重引用符、およびコンマを含むフィールドは、二重引用符で囲む必要があります。
きちんとした、それはまさにExcelがしたことです。要約すると、Excelは「標準」のCSVファイルの推奨事項に従っているようです。適切なCSVパーサーがあれば、ExcelのCSVファイルも読み取ることができるはずです。