【发布时间】:2011-08-22 13:29:06
【问题描述】:
我正在尝试导出我拥有的一些数据(存储在数据表中)。其中一些值中有换行符。现在每次我尝试在 excel (2010) 中导入文件时,linbreaks 都会被识别为新行,而不是实际的换行符。
我已经搜索了几个小时,看到了很多解决方案,但我似乎无法修复它。
我输出 csv 文件的方式: (变量 csvfile 是一个字符串生成器)
context.Response.Clear();
context.Response.ContentType = "text/csv";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + ".csv");
context.Response.Write(csvfile.ToString());
context.Response.End();
当我用 excel 手动打开它时,它显示正常。但是因为excel 2003不支持文件格式,所以我必须导入它。通过导入,它会将换行符(字段中的 \n)视为新行。
很遗憾,我不能给你一个我使用的真实数据的例子(这都是个人数据),但我可以给你一个例子来说明它是如何出错的:
Header1,Header2,Header3
"value1","value2","value 3
and this is where its going wrong"
这是一个简单的 csv 文件,当您导入它时,您会看到哪里出错了。我默认用双引号封装字段。默认情况下,我还会从值中删除前导空格。
我在这个看似简单的问题上花费了至少 2 天时间,但对于我的一生,我无法弄清楚如何解决它。我在同一个问题上看到了多个主题,但那里提供的解决方案似乎都没有解决这个问题。
【问题讨论】:
-
一定要保留换行符吗?
-
是的,恐怕换行符对数据非常重要。
标签: c# excel-2010 csv