2011-01-21 46 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。