Excel for Mac 2016 - 另存为 CSV - 行尾错误

标签 excel macos csv line-endings

我有一些 CSV 导入代码无法导入 Excel for Mac 2016 导出的文件。

CSV 导入代码可以完美地处理 {CR}、{LF} 或 {CR}{LF} 行结尾,但 Excel for Mac 正在导出具有完全断行结尾的文件。

例如,如果我从这样的工作表开始:

Foo|Bar
---+---
123|456

我希望它在导出到 CSV 时看起来像这样:
Foo,Bar{CR}123,456

(我不在乎使用哪个行结尾——它可以是 {CR}、{LF} 或 {CR}{LF},我的 CSV 导入代码会正确处理它)。

但是,这是 Excel for Mac 2016 实际导出它的方式:
Foo,Bar{CR}{CR}{LF}123,456

如果我尝试将其保存为“Windows CSV”,那么它实际上会添加一个额外的列,但根本不会修复行尾:
Foo,Bar,{CR}{CR}{LF}123,456,

导出到 CSV 时我应该使用一组特定的选项吗?

编辑:我应该补充一点,如果我从 Excel for Mac 2016 导出到 CSV,然后立即在 Excel for Windows 2016 中打开文件,它会在每行数据之间添加一个额外的行,如下所示:
Foo|Bar
---+---
   |   
---+---
123|456

所以这不仅仅是我的 CSV 导入代码的问题 - 即使 Excel for Windows 也无法正确读取 Excel for Mac CSV 文件。

最佳答案

我想就我在 Mac OS X 10.12.6 上使用 Excel 版本 16.9 for Mac 看到的内容添加更多细节。

  • 当我从 R 导出 CSV 时在我的 Mac 上,所有行都以 {LF} 结尾。
  • 当我在 MS Excel 中打开导出的 CSV 并通过单击 Ctrl+S 重新保存文件之外什么都不做时,结果行结尾更改为 {CR}{LF}。因此 Excel 将 {CR} 添加到行尾。这碰巧仍然可以读取,因为 {CR}{LF} 是标准的 Windows 行结尾。
  • 当我使用 Mac Mail 发送从 R 导出的 CSV 文件时作为附件,接收到的附件中的所有行都以 {CR}{LF} 结尾。因此 Mac Mail 将 {CR} 添加到行尾。与 Excel 添加 {CR} 字符的方式类似,这仍然显示为 OK;由于行尾,程序只会认为它来自 Windows。
  • 当我使用 Mac Mail 将我从 Excel 保存为附件的 CSV 文件通过电子邮件发送时,收到的附件中的所有行都以 {CR}{CR}{LF} 结尾。当在 Windows 上查看时,这会在 CSV 中添加一个额外的回车符。在记事本中查看时,多余的行被隐藏,但在 Excel 中查看时,由于添加了 {CR},因此在每个原始行之间插入了额外的空白行。

  • 这是一种奇怪的行为,并且有可能破坏下游软件,这些软件使用从 Mac 上的 Excel 导出然后通过电子邮件发送给用户的 CSV 文件。除了避免使用 Mac Mail 发送 CSV 附件外,我目前不知道任何解决方法。

    关于Excel for Mac 2016 - 另存为 CSV - 行尾错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557912/

    相关文章:

    r - 在 R 中压缩 CSV 文件

    python - 为 csv 文件中的每个元素添加引号和制表符

    xcode - “Mac Developer”和 “3rd Party Mac Developer Application”之间的区别

    python - pyusb 无法访问 OUT 端点

    javascript - VBA 导航 IE javascript 链接

    java - 尝试读取 Excel 文件时出现非法状态异常

    macos - 无法使用 '==' 类型的参数列表调用 '(UInt16, UInt16)' 吗?

    php - 如何用php逐行读取CSV并输出

    vba - 通过 excel vba GUI 将 excel 文件导出为 txt 格式

    javascript - 使用 HH :MM:SS 理解 Excel 计算