2014-06-06 37 views
0

我知道如何从本地CSV填充的DataGridView,但我怎么能填充的DataGridView含有CSV链接(如http://financials.morningstar.com/ajax/ReportProcess4CSV.html?&t=XNAS:AAPL&region=usa&culture=en-US&cur=USD&reportType=is&period=12&dataType=A&order=desc&columnYear=5&rounding=3&view=raw&r=706201&denominatorView=raw&number=3链接/网络CSV到datagridview的

我有这样的代码为本地CSV,第一行应改变为指向一个链接,但我不知道如何。

Dim TextFieldParser1 As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\finviz.csv") 

     TextFieldParser1.Delimiters = New String() {","} 

     While Not TextFieldParser1.EndOfData 
      Dim Row1 As String() = TextFieldParser1.ReadFields() 

      If DataGridView1.Columns.Count = 0 AndAlso Row1.Count > 0 Then 
       Dim i As Integer 

       For i = 0 To Row1.Count - 1 
        DataGridView1.Columns.Add("Column" & i + 1, "Column" & i + 1) 
       Next 
      End If 

      DataGridView1.Rows.Add(Row1) 
     End While 

谢谢。

回答

1

尝试:

Dim myUri As New Uri("http://financials.morningstar.com/ajax/ReportProcess4CSV.html?&t=XNAS:AAPL&region=usa&culture=en-US&cur=USD&reportType=is&period=12&dataType=A&order=desc&columnYear=5&rounding=3&view=raw&r=706201&denominatorView=raw&number=3") 
    Dim request As HttpWebRequest = DirectCast(WebRequest.Create(myUri), HttpWebRequest) 
    Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse) 
    Dim receiveStream As Stream = response.GetResponseStream() 

    Dim TextFieldParser1 As New Microsoft.VisualBasic.FileIO.TextFieldParser(receiveStream) 
    TextFieldParser1.Delimiters = New String() {","} 
    While Not TextFieldParser1.EndOfData 
     Dim Row1 As String() = TextFieldParser1.ReadFields() 

     If DataGridView1.Columns.Count = 0 AndAlso Row1.Count > 0 Then 
      Dim i As Integer 

      For i = 0 To Row1.Count - 1 
       DataGridView1.Columns.Add("Column" & i + 1, "Column" & i + 1) 
      Next 
     End If 

     DataGridView1.Rows.Add(Row1) 
    End While 

    receiveStream.Close() 
    response.Close() 
+0

非常感谢。首先下载文件要快得多。 – Jovica

+0

不客气:) – ooopsoft

0

您需要这行之前添加CSV文本下载代码:

Dim TextFieldParser1 As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\finviz.csv") 

要么使用WebClientDownloadFile在单独的线程或DownloadFileAsync(即使用自己独立的线程)或HttpWebRequestHttpWebResponse类下载csv,然后用TextFieldParser解析。

另外,不要硬编码文件名。

+0

我用的是这样的:昏暗strResult的String = RequestWebData(LINK)从CSV解析单个字符串,但分隔符不strResult工作。不知道如何用上面的代码实现该行? – Jovica

+0

WebClient没有任何成功myWebClient.DownloadFile(strResult):重载失败错误。 – Jovica