2011-01-21 54 views
0

在我的網站上,我試圖下載來自雅虎的CSV。它包含一些數據。如何在ASP.NET中的網站上下載CSV文件

我使用下面給出的代碼來下載CSV。

問題:

我想下載和雅虎的CSV但整個CSV獲取所有數據都沒有得到我的身邊創建。

僅部分數據被複制。所以CSV不會下載所有的數據。

我試圖增加緩衝區大小,但沒有幫助雅虎CSV

數據如下圖所示的截圖。這是我想下載

alt text

數據,我在創建CSV得到的,當我下載了同雅虎的CSV如下圖所示的數據。

alt text

代碼我使用的雅虎

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://download.finance.yahoo.com/d/quotes.csv?s=^DJI+^N225+^GSPC+^GDAXI+^FCHI+^HSI+^IXIC+^FTSE&f=l1d14n"); 
     HttpWebResponse ws = (HttpWebResponse)wr.GetResponse(); 
     Stream str = ws.GetResponseStream(); 
     inBuf = new Byte[10000000]; 
     int bytesToRead = Convert.ToInt32(inBuf.ToString().Length); 

     int bytesRead=0; 
     while(bytesToRead>0) 
     { 
      int n = str.Read(inBuf,bytesRead,bytesToRead); 
      if(n==0) 
      { 
       break; 
      } 
      bytesRead += n; 
      bytesToRead -= n; 
     } 
     FileStream fstr = new FileStream("C:\\VSS Working Folder\\20th Jan 11 NewHive\\NewHive\\CSV\\new.csv", FileMode.OpenOrCreate, FileAccess.Write); 
     fstr.Write(inBuf,0,bytesRead); 
     str.Close(); 
     fstr.Close(); 
     return "CSV Downloaded Successfully!"; 

下載CSV出了什麼問題?

+0

如果在文本編輯器而不是電子表格中打開CSV,您會看到什麼? – 2011-01-21 06:56:30

+0

@Kirk:如果我在記事本中打開它,我看到類似`10274.52,「1/2」的東西。可能是什麼錯誤? – 2011-01-21 06:58:46

回答

1

inBuf.ToString()給你「System.Byte []」,該字符串的長度是13.所以你只保存13個字符,它只會從你下載的文件中給出10274.52,"1/2

您可以使用inBuf.Length獲得長度。請注意,長度返回一個int,所以你不需要強制轉換爲int。