將數據從HTML表導入到C#中的DataTable

c# datatable html html-agility-pack

我想從HTML表格導入一些數據(這裡是一個鏈接http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html )並在我的表單應用程序中顯示DataGridView中的前16個人。從我讀到的最好的方法是使用HTML Agility包,所以我下載並包含在我的項目中。據我所知,首先要做的是加載html文件的內容。這是我過去常用的代碼:

        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表中的數據填充我的數據表。我嘗試了很多不同的解決方案,但似乎沒有什麼工作正常。如果有人能幫助我,我會很高興的。

一般承認的答案

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庫才能使用此代碼。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因