2017-02-26 16 views
-1

Ich schreibe einfache App zum Parsen von HTML-Tabelle in Datagridview mit Hilfe von HTML-Agility-Pack. aber wenn ich den Code ausführen es wirft mir eine Fehlermeldung „Diese Zeile gehört bereits zu dieser Tabelle“Hinzufügen von HTML-Tabelle zu Datagridview mit HTML-Agility-Paket

Ich brauche wie einfache HTML-Tabelle zu analysieren, unter

<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> 

dies ist mein Code

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; 
     } 
    } 

ich brauche eine einfache Ausgabe auf Datagridview wie diese

enter image description here

Wie kann ich das mit dem HTML Agility Pack machen?

Antwort

2

Bewegen Sie die folgende Zeile

dt.Rows.Add(dr); 

außerhalb des foreach Schleife über die Tabellenzellen. Sie versuchen, dieselbe Zeile mehrfach zu der DataTable hinzuzufügen.

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

ich danke Ihnen Lösung beheben das Problem, das ich erwähnte. Aber jetzt wird nur der letzte Wert (Deutschland) in allen Feldern gedruckt. –

+0

Das ist, was Ihr Code tut. Schau es dir einfach mal an ... – NineBerry

+0

Könntest du mir bitte zeigen, warum das passiert? Ich bin sehr neu dazu. Danke –

Verwandte Themen