2012-11-06 66 views
0

我試圖顯示數據在下載的.csv文件用下面的代碼流:在這種格式顯示下載鏈接到CSV

WebClient wc = new WebClient(); 
        byte[] csvBytes = wc.DownloadData(url); 
        return File(csvBytes, "text/csv", "Test.csv"); 

的URL返回數據:

「PAUL 「,」SMITH「,」A & P CONSTRUCTION「,」211 N JACKSON ST「,」New York「,」NY「,」98055「 」JEROME「,」HALSEY「,」AAA LOCATION INC「,」1906 SOUTHVIEW DR「,」PAPILLION「,」NE「,」68046「 」MIKE「,」GIBILISCO「,」絕對安全公司「,」944 S JEFFERSON ST「,」PAPILLION「,」NE「,」84102「

上述作品很好,我得到一個下載鏈接...但是當我打開.csv文件 - 我得到的只是一排中的記錄:

\"PAUL\" \"SMITH\" \"A & P CONSTRUCTION\" \"211 N JACKSON ST\" \"PAPILLION\" \"NE\" \"68046\"... 

我應該如何修改上面的代碼這樣我就可以得到正確格式的值(沒有「\」和右邊​​的列)?

+0

什麼是您的瀏覽器? –

+0

我正在使用Firefox – dotNetNewbie

+0

看起來很奇怪。嘗試任何其他瀏覽器進行相同的操作。或嘗試使用Firefox私密瀏覽模式下禁用,可以在CSV –

回答

1

的原因是你得到不同的數據,當您使用的WebClient。看起來,服務器在爲您構建CSV時會查看HTTP標頭。

因此,您需要儘可能模擬您的瀏覽器(只要您在瀏覽器中獲得正確的CSV),以使CSV服務器認爲您是瀏覽器。爲此,您需要查看HTTP標頭,當您訪問CSV URL(您可以使用Fiddler或瀏覽器內置的任何開發工具)時,瀏覽器會發送該標頭。而你需要與不便落得這樣的:

wc.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3"); 
wc.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

添加標題一個接一個,只是一定要擁有絕對相同的標題爲您的瀏覽器發送(而忽略諸如「餅乾」頭,「主機」 )。

0

試圖改變一個MIME類型爲 「application/CSV」。

CSV的MIME類型也是這些:text/comma-separated-values,text/csv,application/csv,application/excel,application/vnd.ms-excel,application/vnd.msexcel,text/anytext

+0

感謝您的建議。但是這並沒有什麼區別。 – dotNetNewbie

+0

你可以試試「application/octet-stream」。 –

+0

還是一樣.. – dotNetNewbie