在c#中导入HTML表到datatable
本文关键字:表到 datatable HTML 导入 | 更新日期: 2023-09-27 17:52:13
我想将一些数据从HTML表导入到数据表中。据我所知,最好的方法是使用HTML敏捷性。这是我以前的代码但是我得到了错误
HtmlAgilityPack。HtmlNodeCollection'不包含'Select'的定义,也没有扩展方法'Select'接受类型为' htmllagilitypack '的第一个参数。HtmlNodeCollection'可以找到(你缺少使用指令或程序集引用吗?)C: ' webbrowser ' WebBrowserControlDialogs ' MainForm.cs。
这是错误行:
otable.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());
有什么办法解决这个问题吗?欣赏
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
var document = webBrowser1.Document;
var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)document.DomDocument;
var content = documentAsIHtmlDocument3.documentElement.outerHTML;
doc.LoadHtml(content);
DataTable otable = new DataTable();
otable.Columns.Add("ID .", typeof(string));
otable.Columns.Add("Art.", typeof(string));
otable.Columns.Add("E ram", typeof(int));
otable.Columns.Add("Hour", typeof(string));
otable.Columns.Add("S", typeof(int));
otable.Columns.Add("Ref", typeof(double));
foreach (var row in doc.DocumentNode.SelectNodes("//tr/td"))
{
otable.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());
//...
您错过了允许您使用LINQ扩展方法的using
。将这段添加到文件的顶部:
using System.Linq;
如果您在尝试调用row.SelectNodes("td").Select(..)
时得到错误Value cannot be null. Parameter name: source
,这意味着row.SelectNodes("td")
是null
。您应该更正代码和/或包含适当的空检查。我认为你应该先选择tr
,然后再选择SelectNodes("td")
来获取单元格。
foreach (var row in doc.DocumentNode.SelectNodes("//tr"))
{
otable.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());
}