Hi Popov deinen Tipp finde ich super..
habe heute mal nen bisschen rum probiert..
ich habe jetzt ne super idee rausgefunden.. bzw. gegoogelt.
Also ich habe eine Webseite da muß ich auf eine Tabelle die sich im
HTML Text befindet. und pro Seite habe ich 50 Auftragsdaten untereinander geglidert, gesamt ca. 1500 Aufträge
Seite ist so ca. aufgebaut..
1-50, 51-100, 101-150, 151-200.... usw. bis 1451-1500 (Das sind jeweils Links zu den 50er Blöcken Aufträgen!
Der Aufbau ist wie bereits schon geschrieben.. ca so aufgebaut
Webseiten beschreibung
bla blub
blub
bla
und dann kommen die Aufträge
Auftragsnummer - Status - KD Name - Anschrift usw.
12313 offen Günther Anschrift
34424 bearbeitet Klaus Anschrifts
usw.
so jetzt habe ich im Netz folgenden Code gefunden und etwas angepaßt auf meine wünsche..
Code:
Delphi-Quellcode:
procedure TForm1.Button13Click(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(7);
aNode := WebBrowser1.OleObject.Document.all.tags(Edit8.text).Item(StrToInt(edit9.text));
// r := aNode.all.tags('tr').Length;//Zeilen feststellen
r := aNode.all.tags(Edit10.text).Length;//Zeilen feststellen
StringGrid1.RowCount := r;
for z := 0 to r-1 do
begin
// aNode2 := aNode.all.tags('tr').Item(z);
aNode2 := aNode.all.tags(Edit11.text).Item(z);
// c := aNode2.all.tags('th').Length;
c := aNode2.all.tags(Edit12.text).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;
StringGrid1.Cells[z2,z] := aNode2.all.tags(Edit13.text).Item(z2).innerText;
end;
// c := aNode2.all.tags('td').Length;
c := aNode2.all.tags(Edit14.text).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;
StringGrid1.Cells[z2,z] := aNode2.all.tags(Edit15.text).Item(z2).innerText;
end;
end;
end;
In den Edit Feldern stehen die Werte um auf die Tabelle zu kommen, die Tabelle der
HTML Seite.. Bei meiner mußte ich nur die Tabellen Nummer von 6 auf 5 stellen der Rest also die "TD" und "TH" Kennzeichnungen sind geblieben..
Nun das funktioniert schonmal super.. Popov deine Idee ist auch super aber ich stoße damit an ein weiteres Problem was ich nicht bedacht hatte... unswar. Jetzt habe ich die Werte ausgelesen im Memo.textfeld und die stehen wie folgt dort
Auftragsnummer-Status-KD Name-Anschriftusw.
12313offenGüntherAnschrift
3442bearbeitetKlausAnschrifts
statt mit leerzeichen so
Auftragsnummer - Status - KD Name - Anschrift usw.
12313 offen Günther Anschrift
34424 bearbeitet Klaus Anschrifts
usw.
..
Und dieses würde bei der weiterverarbeitung dann für mich zu neuen Problemen führen..
Aber ich bin echt Dankbar für deine Tipps hast mir bereits bei einem anderem Problem super super gut weitergeholfen..
Nun jetzt habe ich aber auch wieder ein weiteres Problem.. Wie kann ich mit dem oben stehenden Code für das Parsen in ein Stringgrid erreichen, das er mir zeilen unten dran hängt. Weil wenn ich jetzt die 50 Seiten schritte durch gehe und immer Button13 drücke parster er mir nur den aktuellen wert, logisch und hängt die daten nicht hinter die vorhandenen Werte..
ähnlich wie beim Memofeld schreibe ich
memo2.Text:=WebBrowser1.OleObject.document.body.ou tertext;
dann schreibt er es ins memo, wiederhole ich es überschreibt er mir das memo2 feld
Mit folgendem hängt er einfach hinten dran die folgenden Werte.
Memo2.Lines.Append(WebBrowser1.OleObject.document. body.innerText);
Das würde ich gerne jetzt im Stringgrid mit meinem Code aus Button13 auch erreichen.. Hat jemand eine idee ?
Und mein zweites Problem wie bekomme ich die Werte vom StringGrid nach Excel ?
Ohh jee ich hoffe habe alles verständlich erklären können.. Manchmal ist das wirklich blöd eigentlich einfache Dinge zu erklären.. Hoffe es ist aber halbwegs gut verständlich.
Gruß