2012-12-13 126 views
1

我遇到了一個編程問題,生成一個正確的CSV文件,然後由用戶下載並在我的ASP.NET項目的Excel中打開。 Excel似乎正確地打開文件,但當我去「另存爲」它默認爲Unicode文本。據我所知,CSV基本上是一個文本文件,但如果您嘗試在Excel中創建一個CSV文件,保存並保存,因爲它將默認保存爲CSV格式。因此,我相信一些額外的東西隨着文件被保存。我已經確定HTTP頭文件類型設置爲「text/csv」,所以我確信響應對用戶是正確的。生成正確的CSV文件

+0

的源代碼會有所幫助。 – Heather

+0

請發佈您用於生成文件的源代碼以及由其生成的CSV樣本文件。 – Jason

回答

2

在我工作的地方我們生成了很多CSV,而且我注意到了很多。有一個很好的機會,你的文件就好了。

CSV的問題在於它沒有被任何標準定義,因此每個應用程序都將其解釋爲略有不同。 Excel可能會爲任何不精確的首選格式的CSV文件執行此操作。

也許Excel預計CSV爲ASCII,並且您在文件中獲得了一個UTF BOM,它使得它決定製表符分隔的「Unicode文本」更適合。

+0

謝謝!這確實奏效。 Excel需要該文件爲ASCII格式才能以CSV格式正確「另存爲」 –

0

您是否查看了文件的二進制轉儲以確保下載的文件與您在本地查看的文件相同?可能會使用不同的行終止符(例如),這可能導致Excel容忍地讀取並顯示它,但默認將其保存爲unicode文本。

在Linux(或cygwin)系統上,使用「od -a -x」會告訴你文件是如何組成的。

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