using System; using System.Collections.Generic; using System.Text; //using HtmlAgilityPack; using System.Data; namespace Estsh.Core.Util { public class HtmlTableParser { /// /// 从 HTML 文本中解析
的内容 ///
/// HTML文本 /// 表头在Table中的行数,从 0 开始 /// public static DataSet ParseHtmlTable(string htmlContext, int tableHeadIndex) { DataSet ds = new DataSet(); // 表头在第几行 int RowHeadIndex = tableHeadIndex; // 创建 HTML DOM 树对象 //HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); // 加载 HTML 文本 //doc.LoadHtml(htmlContext); // 当前行计数器 int RowCount = 0; // 当前列计数器 int CellCount = 0; // 遍历 DOM 树中的所有 TABLE //foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table")) //{ // DataTable dt = new DataTable(table.Id.ToString()); // RowCount = 0; // // 遍历行 // foreach (HtmlNode row in table.SelectNodes("tr")) // { // DataRow dr = dt.NewRow(); // CellCount = 0; // // 遍历列 // foreach (HtmlNode cell in row.SelectNodes("th|td")) // { // string CellValue = cell.InnerText.Replace(" ", ""); // // 创建表头 // if (RowCount == RowHeadIndex) // { // DataColumn dc = new DataColumn(CellValue, typeof(string)); // dt.Columns.Add(dc); // } // // 读取表格内容 // else if (RowCount > RowHeadIndex) // { // dr[CellCount++] = CellValue; // } // else // { // // 略过表头之前的内容 // } // } // // 加入数据行 // if (RowCount > RowHeadIndex) // { // dt.Rows.Add(dr); // } // RowCount++; // } // 把数据表加入到数据集 // ds.Tables.Add(dt); //} return ds; } } }