Answers:
这完全取决于您定义为“标准” CSV的内容。就我而言,Excel遵循RFC 4180(“ CSV文件的通用格式和MIME类型”)中概述的规则。
考虑一个表,其中第一行的第一个单元格有两个换行符。在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"
不太复杂。它0D
在单元格中的换行处插入回车符(hex )。每个单元格都用双引号引起来。同样,实际的行用回车符分隔。
为了正确解析,CSV解析器需要
如果它没有做到这一点,那么您将得到类似这样的乱码–请注意,现在有四行而不是两行,因为它无法忽略换行符。
+---+---------------+------------+------------+
| | 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文件。