我遇到了以编程方式生成正确的CSV文件的问题,然后由用户下载并在我的ASP.NET项目中以excel打开。 Excel似乎正确打开文件,但当我转到“另存为”时,它默认为Unicode文本。我知道CSV基本上是一个文本文件,但如果您尝试在Excel中创建CSV,保存,然后保存,因为它将默认保存类型为CSV。因此,我相信一些额外的东西与文件一起被保存。我已确保HTTP标头上下文类型设置为“text / csv”,因此我确信响应对用户是正确的。
答案 0 :(得分:2)
我在工作中生成了很多CSV,我已经注意到了很多。你的文件很可能很好。
CSV的问题在于它没有被任何标准定义,所以每个应用程序都会解释它略有不同。 Excel可能会对任何格式不正确的CSV文件执行此操作。
也许Excel希望CSV为ASCII,并且你在文件中有一个UTF BOM,这使得它决定以制表符分隔的“Unicode文本”更适合。
答案 1 :(得分:1)
这应该有效:
protected void btnDownload_Click(object sender, EventArgs e)
{
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
Response.ContentType = "text/csv";
Response.Write("1;computer;1000");
Response.End();
}
答案 2 :(得分:0)
您是否查看了文件的二进制转储以确保下载的文件与您在本地查看的文件相同?可能会使用不同的行终止符(例如),这可能导致Excel容忍读取并显示它,但默认将其保存为unicode文本。
在Linux(或cygwin)系统上,使用“od -a -x”将告诉您文件的组成方式。