在C#中,将HTML表格转换成DataTable
对象是一个常见的需求,尤其是在处理网页数据或导入HTML格式数据时。
使用了HtmlAgilityPack
库来解析HTML,并利用System.Data
来创建DataTable
。
首先,确保已经安装了HtmlAgilityPack
。如果没有安装,可以通过NuGet包管理器安装:
Install-Package HtmlAgilityPack
然后,你可以使用以下代码来将HTML表格转换为DataTable
:
using System;
using System.Data;
using HtmlAgilityPack;
using System.Collections.Generic;
using System.Linq; public class HtmlTableToDataTable
{ public static DataTable ConvertHtmlTableToDataTable(string htmlTable) { var doc = new HtmlDocument(); doc.LoadHtml(htmlTable); var table = doc.DocumentNode.SelectSingleNode("//table"); var headers = table.SelectNodes("//tr/th").ToList(); var rows = table.SelectNodes("//tr").Skip(1).ToList(); // Skip header row var dataTable = new DataTable(); foreach (var header in headers) { dataTable.Columns.Add(header.InnerText); } foreach (var row in rows) { var cells = row.SelectNodes("td").ToList(); var dataRow = dataTable.NewRow(); for (int i = 0; i < cells.Count; i++) { dataRow[i] = cells[i].InnerText; } dataTable.Rows.Add(dataRow); } return dataTable; }
}
调用ConvertHtmlTableToDataTable
方法,并传递HTML表格的字符串表示来创建DataTable
:
string htmlTable = "<table><tr><th>Column1</th><th>Column2</th></tr><tr><td>Value1</td><td>Value2</td></tr></table>";
DataTable dataTable = HtmlTableToDataTable.ConvertHtmlTableToDataTable(htmlTable);