【问题标题】:Generating proper CSV files生成正确的 CSV 文件
【发布时间】:2012-12-13 22:16:26
【问题描述】:

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

【问题讨论】:

  • 请发布您用来生成文件的源代码以及由它生成的示例 CSV 文件。

标签: c# asp.net csv


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!!这确实奏效了。 Excel 需要文件为 ASCII 格式才能正确“另存为”为 CSV
【解决方案2】:

这应该可行:

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();
}

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多