You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DocumentNode导入网页表格至DataGridView,文本显示异常求助

问题根源与修正方案

核心问题分析

  1. 初始代码绑定List<string>的问题:
    DataGridView绑定List<string>时,默认会显示集合元素的公共属性,而string的公共属性只有Length,所以你看到的数字其实是每个字符串的长度,而非文本内容。

  2. 第二个版本的错误:
    你错误地将DataTable列类型设为int,还强制把表格文本转成整数,这完全偏离了显示文本的需求,而且如果表格文本包含非数字内容,还会抛出格式异常。

修正后的代码

DataTable dt1 = new DataTable();

// 定位目标表格节点
var tableNode = doc.DocumentNode.SelectSingleNode("//div[@id=\"cr_cashflow\"]/div[2]/div/table");
if (tableNode != null)
{
    // 自动创建表格列:优先用表头,无表头则按第一行单元格数量创建
    var headerRow = tableNode.SelectSingleNode("thead/tr") ?? tableNode.SelectSingleNode("tbody/tr[1]");
    if (headerRow != null)
    {
        foreach (var headerCell in headerRow.Elements("th"))
        {
            dt1.Columns.Add(headerCell.InnerText.Trim(), typeof(string));
        }
    }
    else
    {
        var firstDataRow = tableNode.SelectSingleNode("tbody/tr");
        if (firstDataRow != null)
        {
            int columnCount = firstDataRow.Elements("td").Count();
            for (int i = 0; i < columnCount; i++)
            {
                dt1.Columns.Add($"列{i+1}", typeof(string));
            }
        }
    }

    // 遍历所有数据行,填充DataTable
    var dataRows = tableNode.SelectNodes("tbody/tr").Where(tr => tr.Elements("td").Count() > 0);
    foreach (var rowNode in dataRows)
    {
        DataRow newRow = dt1.NewRow();
        int cellIndex = 0;
        foreach (var cellNode in rowNode.Elements("td"))
        {
            if (cellIndex < dt1.Columns.Count)
            {
                newRow[cellIndex] = cellNode.InnerText.Trim();
                cellIndex++;
            }
        }
        dt1.Rows.Add(newRow);
    }
}

// 绑定到DataGridView
dataGridView1.DataSource = dt1;

关键修正点

  • 放弃直接绑定List<string>:改用DataTable来承载表格结构,确保每个单元格内容对应DataTable的一列一行。
  • 列类型设为string:完全匹配你要显示文本的需求,避免不必要的类型转换。
  • 拆分单元格数据:不再直接取<tr>的InnerText(这会把一行所有单元格文本拼接成一个字符串),而是遍历每个<td>,将文本分别填入DataTable的对应单元格,还原表格的原始结构。

内容的提问来源于stack exchange,提问作者DynamicHelp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:01:06