Html-Tabelle auslehsen



  • Gibt es eine fertige (Standard-)Komponente, mit der man eine Html-Tabelle auslesen kann?

    Also die Tabelle wird von einer Internet-Seite kopiert und soll dann von meinem Programm ausgelesen werden. (Also mit der Clipboard-Komponente hab ich keine Probleme.) Ich hab den Html-Code dann in der Variable String HtmlCode, eigentlich könnte man die Tabelle ja ganz leicht auslesen, aber die ganzen Formatierungen der Tabelle stören mich dabei. Der eigentliche Tabellen-Inhalt müsste irgendwie herausgefiltert werden. Um mir etwas Arbeit zu ersparen frage ich euch halt, ob es nicht schon eine Komponente gibt, die mir das ganze etwas leichter macht.

    Ich freue mich schon auf eure Antworten 🙂



  • Hallo Anfaenger2003 !

    Ich gehe mal davon aus wenn Du sagst, dass Du mit 'der Variable String HtmlCode' arbeitest, dass Du in C# programmierts, oder? (Da dieses Forum mehrere Programmiersprachen abdeckt ist dies keine unerhebliche Frage 😋 )

    Wenn es denn so ist, dann gibt es (wie immer) mehrere Lösungsansätze :

    1. Du befreist Deinen HTML-Text per Regex-Deklaration in vielleicht folgender Art und Weise :

    String PlainText = Regex.Replace(HtmlCode, "<[^<>]+>", " ");
    

    Der Nachteil an dieser Methode ist, das diese etwa 98% Deines HTML-Codes von HTML-Tags bereinigt, aber HTML-Befehle die nicht in '<' bzw. '>'-Klammern stehen, wie z.B. &nbsp (non blanking space) oder Zeichen die in Hex-Werten angegeben werden %20 (Leerzeichen), nicht rausfiltert. Hier müsstest Du für diese Sachen nochmal seperat eine Filterung schalten.

    2. Du benutzt die WebBrowser-Klasse (nur bei Windows-Applikationen !), um Dir den reinen Text aus dem HTML-Code ausgeben zu lassen. Dazu fütters Du per HtmlDocument (in diesem steht Dein HTML-Code) den WebBrowser und läßt diesen den Text wieder ausspucken. Wie folgt etwa :

    string strHtmlText  = "<b>Hallo</b>&nbsp<i>Welt</i>";
                string strPlainText = string.Empty;
    
                HtmlDocument htmlDocument = null;
                HtmlElement htmlElement = null;
    
                WebBrowser browser = new WebBrowser();
                browser.Url = null;
    
                htmlDocument = browser.Document;
                htmlDocument.Write(strHtmlText);
                htmlElement = htmlDocument.Body;
    
                strPlainText = htmlElement.OuterText;
                browser.Dispose();
    

    In der Variablen 'strPlainText' steht dann der, von allen HTML-Tags und -Codes befreite Text. Du kannst zwar den WebBrowser als .NET-Komponente per Designer in Deine Form ziehen, aber da er nur im Hintergrund (nicht sichtbar) die HTML-Tags entfernen soll, würde ich die Instanzierungsmethode des WebBrowsers vorziehen.

    Gruß Ernst



  • 😮 Danke, dass Du dir bei der Beantwortung so viel Mühe gegeben hast. (Find ich echt spitze 👍 )

    ➡ Jetzt habe ich aber trotzdem noch eine Frage:
    Wenn ich mit htmlElement.OuterText den reinen Text erhalte, wie kann ich dann die einzelnen Zelleninhalte von einander trennen?



  • Anfaenger2003 schrieb:

    ➡ Jetzt habe ich aber trotzdem noch eine Frage:
    Wenn ich mit htmlElement.OuterText den reinen Text erhalte, wie kann ich dann die einzelnen Zelleninhalte von einander trennen?

    Hab mich mal über HtmlDocument und HtmlElement informiert! Jetzt klappt alles wunder bar... danke noch mal an MacReeg


Anmelden zum Antworten