1

我在以编程方式生成正确的 CSV 文件时遇到问题,该文件随后由用户下载并在我的 ASP.NET 项目中的 excel 中打开。Excel 似乎可以正确打开文件,但是当我转到“另存为”时,它默认为 Unicode 文本。我知道 CSV 基本上是一个文本文件,但是如果您尝试在 Excel 中创建一个 CSV,保存,然后保存,因为它将默认保存为 CSV 类型。因此,我相信一些额外的东西会与文件一起保存。我已确保 HTTP 标头上下文类型设置为“text/csv”,因此我确信响应对用户来说是正确的。

4

3 回答 3

2

我们在我工作的地方生成了很多 CSV,我已经注意到了很多。您的文件很有可能很好。

CSV 的问题在于它没有由任何标准定义,因此每个应用程序对其的解释都略有不同。Excel 可能会为任何不是其首选格式的 CSV 文件执行此操作。

也许 Excel 期望 CSV 是 ASCII,并且您在文件中有一个 UTF BOM,这使得它决定制表符分隔的“Unicode 文本”更合适。

于 2012-12-13T22:26:20.687 回答
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();
}
于 2012-12-13T22:32:58.517 回答
0

您是否查看了文件的二进制转储以确保正在下载的文件与您在本地查看的文件相同?可能使用了不同的行终止符(例如 ),这可能导致 Excel 容错地读入并显示它,但默认将其保存为 unicode 文本。

在 Linux(或 cygwin)系统上,使用“od -a -x”将告诉您文件是如何组成的。

于 2012-12-13T22:22:30.283 回答