我有一些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文件。
答案 0 :(得分:0)
好的 - 我相信我可能找到了答案。
我之前没有提到它,因为我从未想过它可能导致此问题,但在导出每个CSV文件后,我将其通过电子邮件发送到Windows PC进行测试。
显然,Mac Mail会破坏附加的CSV文件中的行结尾!
来源:https://discussions.apple.com/thread/2235362
直接上传这些文件并使用我的CSV导入代码处理时,我仍然会遇到问题,因此我必须查看Safari是否也在破坏CSV文件。
答案 1 :(得分:0)
我希望使用Excel版本16.9 for Mac在Mac OS X 10.12.6上看到更多细节。
当我从Mac上的R
导出CSV时,所有行都以{LF}结尾。
当我在MS Excel中打开导出的CSV并且只执行操作而不是通过单击Ctrl + S重新保存文件时,生成的行结尾将更改为{CR} {LF}。所以Excel正在向行结尾添加{CR}。这恰好仍然可以读取,因为{CR} {LF}是标准的Windows行结束。
当我使用Mac Mail将从R
导出的CSV文件作为附件发送电子邮件时,收到的附件中的所有行都以{CR} {LF}结尾。所以Mac Mail正在向行结尾添加{CR}。与Excel添加{CR}字符的方式类似,这仍然可以正常显示;该程序只会认为它来自Windows,因为行结尾。
当我使用Mac Mail通过电子邮件发送我从Excel保存为附件的CSV文件时,收到的附件中的所有行都以{CR} {CR} {LF}结尾。在Windows上查看时,这会为CSV添加额外的回车。在记事本中查看时,额外的行被抑制,但在Excel中查看时,由于添加了{CR},每条原始行之间会插入额外的空白行。
这是一种奇怪的行为,有可能破坏下游软件,这些软件使用从Mac上的Excel导出然后通过电子邮件发送给用户的CSV文件。除了避免使用Mac Mail发送CSV附件之外,我目前还不知道任何解决方法。
答案 2 :(得分:0)
代替Excel导出功能,将数据复制到文本编辑器,例如。在Mac上为TextEdit。
(新窗口,格式->做纯文本)
然后将数据列分隔符(相邻列的值之间的间隔)从TextEdit窗口复制到“查找”对话框,
并在“替换为”框中键入“,”(不带引号)。
单击“全部替换”,然后在TextEdit窗口中用逗号分隔Excel数据。
保存扩展名为.csv的文件。
它应该同时在Mac和Windows版本的MS Excel中打开。
在Mac OSX 10.6.8和Win 10上进行了测试。