Excel 在swift应用程序的单个单元格中创建带有换行符的.csv文件

Excel 在swift应用程序的单个单元格中创建带有换行符的.csv文件,excel,csv,newline,cell,Excel,Csv,Newline,Cell,我有一个问题,我已经讨论了两天了。我在网上读了很多文件,但也许有人能帮我。简而言之,对于那些不想进一步阅读的人,我需要将.csv文档导入excel,其中包含大量数据,其中包括一些单元格,其中包含两行或更多行 下面是我的第一个.csv文件,例如使用utf16 little-endian编码: Id;Order Date;First Name (Billing);Optional message; 106119;"2016-11-01 \r\n 22:34:00";John;; 94540;"201

我有一个问题,我已经讨论了两天了。我在网上读了很多文件,但也许有人能帮我。简而言之,对于那些不想进一步阅读的人,我需要将.csv文档导入excel,其中包含大量数据,其中包括一些单元格,其中包含两行或更多行

下面是我的第一个.csv文件,例如使用utf16 little-endian编码:

Id;Order Date;First Name (Billing);Optional message;
106119;"2016-11-01 \r\n 22:34:00";John;;
94540;"2016-11-01 \n 22:37:33";John;;
94540;"2016-11-01 \r 22:37:33";John;;
94540;"2016-11-01 \n\r 22:37:33";John;;
94540;"2016-11-01
22:37:33";Damien;;
根据我读到的最后一行或事件,\n行应在单个单元格中打印两行,但OS X上的excel 15会识别并转到下一行

下面是几乎相同的文件,但也不起作用:

"Id","Order Date","First Name (Billing)","Optional message",
"106119","2016-11-01 \r\n 22:34:00","John","",
"94540","2016-11-01 \n 22:37:33","John","",
"94540,"2016-11-01 \r 22:37:33","John","",
"94540,"2016-11-01 \n\r 22:37:33","John","",
"94540,"2016-11-01
22:37:33","Damien","",
我将\r\n添加到每行的末尾


谁能告诉我我做错了什么,我已经没有主意了。再次使用mac上的Office 15。再问我一个问题。我尝试了swift生成的.csv文件以及woocommerce从wordpress导出的文件,我手动编辑该文件以包含单元格的换行符。两者都不起作用。我不知道该怎么办。如果你这样做,请通过编辑我的一个例子给我发送正确的方式。提前谢谢。

没有mac电脑,但在Windows上试用过。 Excel可以在使用Excel时使用ALT+ENTER在单元格中添加“新行”。 在一个十六进制编辑器中,我看到它转换为0x0A字符,这是换行符/或LF

因此,在生成CSV文件时,需要输入LF 0x0A字符,而不是\r或\n,因为没有任何内容可以解释这些转义序列

为了测试这一点,我编写了一个简单的C代码片段

char lf = (char)0x0A;
System.IO.StreamWriter sw = System.IO.File.CreateText(@"x.csv");
        sw.WriteLine("Id,Name,DateTime,Message");
        sw.WriteLine("\"343\",\"34343\",\"12/12/2014{0}10:30\",\"dfsdfsfsdfsdf\"", lf);
        sw.WriteLine("\"343\",\"34343\",\"12/12/2014{0}10:30\",\"dfsdfsfsdfsdf\"", lf);
        sw.WriteLine("\"343\",\"34343\",\"12/12/2014{0}10:30\",\"dfsdfsfsdfsdf\"", lf);
        sw.WriteLine("\"343\",\"34343\",\"12/12/2014{0}10:30\",\"dfsdfsfsdfsdf\"", lf);
        sw.Close();
然后我在Excel中打开生成的CSV文件,就可以得到 显示“多行”单元格。希望这能给你一些指导,告诉你如何让类似的东西在Mac上工作


在字符串的开头和结尾使用
\“
添加双引号,并对每一行使用
\n

var checklist = "\"first line" 
for item in category.items{
     //add new line
     checklist += "\n additional line"
}
checklist += "\"" //adds " at end

感谢您的解决方案。我理解这在理论上是如何工作的,但在Swift中,至少在写入文件之前,十六进制字符似乎已被翻译,这意味着在我将字符串写入文件时,字符串已被翻译为文件中的换行符,返回到第1行。我实际编译了这段代码,并尝试插入nto excel for mac,但它不起作用:(