使用 HTML 敏捷包将 HTML table 添加到数据网格视图
Adding HTML table to datagridview using HTML Agility pack
我使用 HTML 敏捷包的帮助编写简单的应用程序来将 HTML table 解析为 datagridview。但是当我 运行 代码时它抛出一个错误 "This row already belongs to this table"
我需要解析简单的 HTML table 如下
<html>
<head>
</head>
<body>
<table>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
</table>
</body>
</html>
这是我的代码
private void button1_Click(object sender, EventArgs e)
{
var htmlCode = richTextBox1.Text.Trim();
var doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
dt = new DataTable();
dt.Columns.Add("Company", typeof (string));
dt.Columns.Add("Contact", typeof (string));
dt.Columns.Add("Country", typeof (string));
var count = 0;
foreach (var table in doc.DocumentNode.SelectNodes("//table"))
{
foreach (var row in table.SelectNodes("//tr"))
{
var dr = dt.NewRow();
var i = 0;
foreach (var cell in row.SelectNodes("//td"))
{
dr["Company"] = cell.InnerText.Replace(" ", "");
dr["Contact"] = cell.InnerText.Replace(" ", "");
dr["Country"] = cell.InnerText.Replace(" ", "");
}
dt.Rows.Add(dr);
}
grid.DataSource = dt;
}
}
我需要像这样在 datagridview 上进行简单的输出
如何使用 HTML 敏捷包执行此操作?
移动下一行
dt.Rows.Add(dr);
在 table 单元格的 foreach 循环之外。您尝试将同一行多次添加到 DataTable。
int i = 0;
foreach (var cell in row.SelectNodes("//td"))
{
dr[i++] = cell.InnerText;
}
dt.Rows.Add(dr);
我使用 HTML 敏捷包的帮助编写简单的应用程序来将 HTML table 解析为 datagridview。但是当我 运行 代码时它抛出一个错误 "This row already belongs to this table"
我需要解析简单的 HTML table 如下
<html>
<head>
</head>
<body>
<table>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
</table>
</body>
</html>
这是我的代码
private void button1_Click(object sender, EventArgs e)
{
var htmlCode = richTextBox1.Text.Trim();
var doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
dt = new DataTable();
dt.Columns.Add("Company", typeof (string));
dt.Columns.Add("Contact", typeof (string));
dt.Columns.Add("Country", typeof (string));
var count = 0;
foreach (var table in doc.DocumentNode.SelectNodes("//table"))
{
foreach (var row in table.SelectNodes("//tr"))
{
var dr = dt.NewRow();
var i = 0;
foreach (var cell in row.SelectNodes("//td"))
{
dr["Company"] = cell.InnerText.Replace(" ", "");
dr["Contact"] = cell.InnerText.Replace(" ", "");
dr["Country"] = cell.InnerText.Replace(" ", "");
}
dt.Rows.Add(dr);
}
grid.DataSource = dt;
}
}
我需要像这样在 datagridview 上进行简单的输出
如何使用 HTML 敏捷包执行此操作?
移动下一行
dt.Rows.Add(dr);
在 table 单元格的 foreach 循环之外。您尝试将同一行多次添加到 DataTable。
int i = 0;
foreach (var cell in row.SelectNodes("//td"))
{
dr[i++] = cell.InnerText;
}
dt.Rows.Add(dr);