【问题标题】:Adding HTML table to datagridview using HTML Agility pack使用 HTML 敏捷包将 HTML 表添加到 datagridview
【发布时间】:2017-02-27 02:53:03
【问题描述】:

我在 HTML Agility 包的帮助下编写了用于将 HTML 表格解析为 datagridview 的简单应用程序。但是当我运行代码时,它会抛出一个错误“这一行已经属于这个表”

我需要解析简单的 HTML 表格,如下所示

<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("&nbsp;", "");
                    dr["Contact"] = cell.InnerText.Replace("&nbsp;", "");
                    dr["Country"] = cell.InnerText.Replace("&nbsp;", "");

                }


                dt.Rows.Add(dr);
            }


            grid.DataSource = dt;
        }
    }

我需要像这样的 datagridview 上的简单输出

如何使用 HTML Agility 包做到这一点?

【问题讨论】:

    标签: c# html parsing datagridview html-agility-pack


    【解决方案1】:

    移动下一行

    dt.Rows.Add(dr);
    

    在表格单元格的 foreach 循环之外。您尝试将同一行多次添加到 DataTable。

    int i = 0;
    foreach (var cell in row.SelectNodes("//td"))
    {
        dr[i++] = cell.InnerText;
    }
    dt.Rows.Add(dr);
    

    【讨论】:

    • 感谢您解决我提到的问题。但现在它只打印所有字段中的最后一个值(德国)。
    • 你能告诉我为什么会这样吗?我对此很陌生。谢谢
    • 仍然无法修复
    • @gripenfighter 用您当前的代码更新问题,并详细说明您还有什么问题。
    • 我编辑了代码。我需要得到如图所示的html表格
    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2012-08-23
    • 2010-10-13
    • 1970-01-01
    • 2012-07-26
    相关资源
    最近更新 更多