use*_*195 16 file-format csv microsoft-excel
Excel CSV 和标准 CSV 之间的真正区别是什么?
例如,在处理一个单元格内带有换行符的列时,它们如何对其进行不同的编码?
slh*_*hck 20
这绝对取决于您定义的“标准”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 |
+---+---------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)
现在,Excel 将如何导出它?让我们看看——一个文本编辑器会显示这个:
"col1, line1a
col1, line1b
col1, line1c","col2, row1","col3, row1"
"col1, row2","col2, row2","col3, row2"
Run Code Online (Sandbox Code Playgroud)
不是很复杂。它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 |
+---+---------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)
但是,让我们看看 RFC 怎么说,也许 Excel 做对了?
包含换行符 (CRLF)、双引号和逗号的字段应该用双引号括起来。
很好,这正是 Excel 所做的。总而言之,Excel 似乎遵循“标准”CSV 文件的建议。给定一个合适的 CSV 解析器,它也应该能够读取 Excel CSV 文件。
归档时间: |
|
查看次数: |
15880 次 |
最近记录: |