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

Excel for Mac 2016 - Save As CSV - Bad Line Endings

我有一些 CSV 导入代码无法导入 Excel 为 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 导出到 CSV for Mac 2016,然后立即在 Excel for Windows 2016 中打开文件,它被导入时每行数据之间有一个额外的行,如下所示:

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

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

好的 - 我相信我可能已经找到了答案。

我之前没有提到它,因为我从来没有想过它可能会导致这个问题,但在导出每个 CSV 文件后,我将它通过电子邮件发送到 Windows PC 上进行测试。

显然,Mac 邮件损坏了附加 CSV 文件中的行结尾!

来源:https://discussions.apple.com/thread/2235362

当这些文件直接上传并使用我的 CSV 导入代码进行处理时,我仍然遇到问题,所以我必须看看 Safari 是否也在破坏 CSV 文件。

我想根据我在 Mac OS X 10.12.6 使用 Excel 版本 16.9 为 Mac 看到的内容添加更多细节.

  • 当我从 Mac 上的 R 导出 CSV 文件时,所有行都以 {LF} 结尾。

  • 当我在 MS Excel 中打开导出的 CSV 并且只通过单击 Ctrl+S re-save 文件什么都不做时,生成的行结尾更改为 {CR} {如果}。所以 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 添加一个额外的回车符 return。在记事本中查看时,多余的行被抑制,但在Excel中查看时,由于添加了{CR},因此在每个原始行之间插入了额外的空行。

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

代替Excel导出功能,将数据复制到文本编辑器,例如。 Mac.
上的文本编辑 (新 window,格式 -> 制作纯文本)
然后从TextEdit window复制数据列分隔符(相邻列值之间的间隙)到'Find'对话框, 并在 'Replace with' 框中键入“,”(不带引号)。
单击 'Replace All',您的 Excel 数据将在 TextEdit window.
中以逗号分隔 以 .csv 扩展名保存文件。

它应该在 Mac 和 Windows 版本的 MS Excel 中打开。

在 Mac OSX 10.6.8 和 Win 10 上测试。