- A+
所属分类:.NET技术
使用 HtmlAgilityPack 库来将 HTML 表格转换为 DataTable。
首先,确保已经安装了 HtmlAgilityPack 包。可以通过 NuGet 包管理器或者通过命令行安装。
按照以下步骤将 HTML 表格转换为 DataTable:
- 导入命名空间:
csharpCopy Code
using HtmlAgilityPack;
- 创建一个方法来进行转换:
csharpCopy Code
public static DataTable ConvertHtmlTableToDataTable(string html) { DataTable dataTable = new DataTable("MyDataTable"); // 加载 HTML 字符串 HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); // 找到表格节点 HtmlNode tableNode = doc.DocumentNode.SelectSingleNode("//table"); if (tableNode != null) { // 找到所有的表头行和数据行 IEnumerable<HtmlNode> headerRows = tableNode.SelectNodes("tr[th]"); IEnumerable<HtmlNode> dataRows = tableNode.SelectNodes("tr[td]"); // 添加表头列到 DataTable if (headerRows != null) { foreach (HtmlNode headerRow in headerRows) { foreach (HtmlNode headerCell in headerRow.SelectNodes("th")) { dataTable.Columns.Add(headerCell.InnerText.Trim()); } } } // 添加数据列到 DataTable if (dataRows != null) { foreach (HtmlNode dataRow in dataRows) { DataRow row = dataTable.NewRow(); for (int i = 0; i < dataTable.Columns.Count; i++) { HtmlNode dataCell = dataRow.SelectNodes("td")[i]; row[i] = dataCell.InnerText.Trim(); } dataTable.Rows.Add(row); } } } return dataTable; }
- 调用方法进行转换:
csharpCopy Code
string html = "<table>...</table>"; // 假设这里是你的 HTML 表格字符串 DataTable dataTable = ConvertHtmlTableToDataTable(html);
注意:这段代码假设 HTML 表格的结构是标准的,即包含表头行(<tr>
元素中包含 <th>
元素)和数据行(<tr>
元素中包含 <td>
元素)。如果 HTML 结构不符合标准,可能需要进行适当的修改来适应实际情况。