2013-08-06 60 views
4

我想從HTML表格導入一些數據(這裏是一個鏈接http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html),並在我的Form應用程序中顯示DataGridView中的前16個人。從我讀過的最好的方法是使用HTML敏捷包,所以我下載了它幷包含到我的項目中。我明白要做的第一件事就是加載html文件的內容。這是我用來做這樣的代碼:從HTML表格導入數據到DataTable在C#

 string htmlCode = ""; 
     using (WebClient client = new WebClient()) 
     { 
      client.Headers.Add(HttpRequestHeader.UserAgent, "AvoidError"); 
      htmlCode = client.DownloadString("http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html"); 
     } 
     HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 

     doc.LoadHtml(htmlCode); 

後來,我被卡住了。我不知道如何用html表格中的數據填充我的數據表。我嘗試了很多種解決方案,但似乎沒有任何工作正常。如果有人能幫助我,我會很高興。

+0

嘗試遍歷列上的行進行迭代。按單元格填充表格。查看'HtmlDocument.GetElementsByTagName(...)'或'ById(...)'等方法 – SimpleVar

+1

[將數據從HTML表中獲取到數據表中](http://stackoverflow.com/questions/10513529 /從-HTML數據表中獲取數據) –

+0

格蘭特溫尼是的我已經使用該線程中的代碼 – user2658455

回答

9
HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(htmlCode); 
var headers = doc.DocumentNode.SelectNodes("//tr/th"); 
DataTable table = new DataTable(); 
foreach (HtmlNode header in headers) 
    table.Columns.Add(header.InnerText); // create columns from th 
// select rows with td elements 
foreach (var row in doc.DocumentNode.SelectNodes("//tr[td]")) 
    table.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray()); 

您需要HTML Agility Pack庫才能使用此代碼。