Einzelnen Beitrag anzeigen

Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 

Re: Wie bekomme ich eine HTMl Tabelle in ein StringGrid

  Alt 22. Jan 2006, 13:08
Hallo,

Du könntest Dir eine WebBrowser-Komponente auf die Form legen und dann mit WebBrowser1.OleObject.Document.all.tags('X') auf die HTML-Elemente zugreifen.
Das ist natürlich stark abhängig von der Struktur der Web-Seite.
Welche Tabelle ist die betreffende, sind die Tabellen verschachtelt, liegen sie in einem Frame, u.s.w. ...
Einlesen einer ASCII-Tabelle, ein Beispiel:
Delphi-Quellcode:
procedure TForm1.LadenClick(Sender: TObject);
var f : Olevariant;
begin
WebBrowser1.Navigate('http://www.manderby.com/mandalex/a/ascii.php?id=30',f,f,f,f);
end;

procedure TForm1.KonvertierenClick(Sender: TObject);
var aNode,aNode2 : Olevariant;
   r,c,z,z2 : Integer;
begin
  //item(6) = 7te Tabelle in der Webseite
  aNode := WebBrowser1.OleObject.Document.all.tags('table').Item(6);
  r := aNode.all.tags('tr').Length;//Zeilen feststellen
  StringGrid1.RowCount := r;
  for z := 0 to r-1 do
    begin
    aNode2 := aNode.all.tags('tr').Item(z);
    c := aNode2.all.tags('th').Length;
    if c > 0 then
      begin
      if c > StringGrid1.ColCount then
        StringGrid1.ColCount := c;
      for z2 := 0 to c-1 do
        StringGrid1.Cells[z2,z] := aNode2.all.tags('th').Item(z2).innerText;
      end;
    c := aNode2.all.tags('td').Length;
    if c > 0 then
      begin
      if c > StringGrid1.ColCount then
        StringGrid1.ColCount := c;
      for z2 := 0 to c-1 do
        StringGrid1.Cells[z2,z] := aNode2.all.tags('td').Item(z2).innerText;
      end;
    end;
end;
Der Code geht von einer einfachen Tabelle aus.
Z.B. sind Attribute(Colspan,rowspan, align ...) der th u. td-Elemente nicht berücksichtigt,
diese lassen sich aber auch auslesen und im Ziel-StringGrid berücksichtigen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat