AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi HTML parsen und in Excel 2007 Tabelle eintragen?
Thema durchsuchen
Ansicht
Themen-Optionen

HTML parsen und in Excel 2007 Tabelle eintragen?

Ein Thema von Hedge · begonnen am 23. Jan 2009 · letzter Beitrag vom 7. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#1

HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 06:34
Hallo,
habe bisher nichts explizites zum Thema gefunden.

Also ich möchte eine HTML-Seite in Delphi parsen (muss sich vorher einloggen) und dann Werte in bestimmte Felder einer Excel-Tabelle eintragen.

Ist das auch mit VBA möglich und wenn nein, was brauch ich dazu in Delphi bzw. wie setze ich es am schnellsten um.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 06:39
HTML-Seite parst du am besten mit Hilfe von TWebBrowser und dem Document-Property (Unit MSHTML.pas einbinden und Documenet nach IHTMLDocument2 casten. Der Zugriff auf Excel kannst du entweder über die Komponenten TExcel machen oder du importierst dir selbst die Typbibliotheken von MS. Doku zu IHTMDocument2 und Excel findest du bei MS in der MSDN.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#3

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 13:12
Danke für die Tipps.
Hab das mit TWebBrowser hinbekommen und es auch geschafft die Typbibliotheken zu installieren.

Hab mich gerade bei MSDN zum Thema Excel umgeschaut und werd nicht so richtig schlau draus, was ich nun machen muss um erstmal nur Datensätze aus der gerade geöffneten Tabelle zu lesen.

Es stehen die Komponenten:
TExcelQueryTable
TExcelApplication
TExcelChart
TExcelWorksheet und
TExcelWorkbook
zur Verfügung.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 13:13
Hi!

Schau mal, ob dich das weiterbringt:
http://www.delphipraxis.net/internal...ct.php?t=43640


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#5

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 13:27
Das ist ganz gut, aber meine Komponenten funktionieren anders als in dem Tutorial.

Zum Beispiel beschwert der Compiler sich bei der Zeile:

ExcelApp.Range['A1:B4'].Select; über: "not enough actual parameters"

generell will der bei allen Funktionen mehr Parameter haben...

Connecten zu Excel und einfach Befehle klappen, aber z.B. folgendes geht nicht

ExcelApp.Worksheets[0].Cells.Item[1.1].Value;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 13:42
Hallo,

befürchte, Du bist auf dem falschen Dampfer:

Range['A1:B4'].Select gehört eher zu einem ExcelWorkSheet.

Itmes 1.1 wird nicht gehen, allenfalls 1,1.

Probiere mal bitte, ob Du damit weiterkommst:
Delphi-Quellcode:
Uses ..., Excel97, ... ;
...
Var
          ea : TExcelApplication;
          ewb : TExcelWorkbook;
          ews1 : TExcelWorkSheet;
begin
  // Variabeln für die Verbindung zu Excel initialisieren
  ea := TExcelApplication.Create(Self);
  ewb := TExcelWorkbook.Create(Self);
  ews1 := TExcelWorksheet.Create(Self);
  // Verbindungsart zu Excel festlegen.
  ea.ConnectKind := ckNewInstance;
  ewb.ConnectKind := ckNewInstance;
  ews1.ConnectKind := ckNewInstance;
  // Diese ID wird zur Komunikation mit Excel benötigt.
  lcid := LOCALE_USER_DEFAULT;
  Try
    // Excel soll unsichtbar arbeiten.
    ea.Visible[lcid] := False;

// Dein Code...

    ews1.Range['A1','A1'].Select;
    Try
      // Gibts die Datei schon, dann löschen.
      If FileExists(sFileName) Then DeleteFile(sFileName);
      // Exceldatei speichern.
      ewb.SaveAs(sFilename,xlNormal,'','',False,False,xlNoChange,xlLocalSessionChanges,False,'','',lcid);
    Except
      // Wenn's Speichern der Exceltabelle schief ging,
      // die Tabelle ist in Excel geöffnet und kann vom Anwender
      // manuell gespeichert werden.
      On E : Exception Do Begin
        MessageDlg('Fehler beim Speichern der Excel-Tabelle ' + sFileName + '.'
        + #13 + e.Message,mtError,[mbok],0);
        // Excel soll sichtbar arbeiten.
        ea.Visible[lcid] := True;
      End;
    End;
    Try
      // Workbook schließen
      // Excel fragt nach, ob Änderungen gespeichert werden sollen
      ea.Workbooks.Close(lcid);
      ea.Quit;
    Except
      On E : Exception Do Begin
        MessageDlg('Fehler beim Schließen der Excel-Tabelle ' + sFileName + '.'
        + #13 + e.Message,mtError,[mbok],0);
        // Excel soll sichtbar arbeiten.
        ea.Visible[lcid] := True;
      End;
    End;
  Finally
    // Verbindung zu Excel trennen.
    ews1.Disconnect;
    ewb.Disconnect;
    ea.Disconnect;
    ews1.Free;
    ewb.Free;
    ea.Free;
  End;
Das ist jetzt ganz schnell per "Vererbung per Copy&Paste" aus einem Programm geklaut, daher kann ich nicht sagen, ob es so auf Anhieb funktionieren wird.
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#7

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 14:00
Der mag diese Zeile nicht:

  lcid := LOCALE_USER_DEFAULT; [Pascal Error] Form.pas(112): E2029 '(' expected but ':=' found
[Pascal Error] Form.pas(112): E2014 Statement expected, but expression of type 'Integer' found

Muss man nicht Connect machen auf Application oder alle 3 ? Ich seh da im Moment nicht durch.

Habe als ConnectKind bei allen 3 Sachen ckRunningInstance, weil ich in ner geöffneten Excel-Tabelle rumwurschteln möchte.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 14:12
Hallo,

das Teil, aus dem ich da kopiert habe, ist schon Jahre alt, weiß da auf Anhieb auch nicht mehr so genau, was jetzt zwingend erforderlich ist, war nur als Vorschlag gedacht.

lcid : Integer;

LOCALE_USER_DEFAULT ist in der Unit Windows deklariert.
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#9

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 14:36
Ok damit tritt der Fehler zumindest nicht mehr auf..aber der folgende Code wirft eine Exception:

Delphi-Quellcode:
    // Variabeln für die Verbindung zu Excel initialisieren
  excelApp := TExcelApplication.Create(Self);
  excelBook := TExcelWorkbook.Create(Self);
  excelSheet := TExcelWorksheet.Create(Self);
  // Verbindungsart zu Excel festlegen.
  excelApp.ConnectKind := ckRunningInstance;
  excelBook.ConnectKind := ckRunningInstance;
  excelSheet.ConnectKind := ckRunningInstance;
  // Diese ID wird zur Komunikation mit Excel benötigt.
  lcid := LOCALE_USER_DEFAULT;


  excelSheet.Range['A2','A2'].Select;
  excelSheet.Cells.Item[1,1].Value;
Project blub.exe raised exception class EOleSysError with message 'Unable to retrieve pointer to a running object registered with OLE for Excel.Sheet/{4545987-jedemengezahlen-84385}'.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: HTML parsen und in Excel 2007 Tabelle eintragen?

  Alt 23. Jan 2009, 14:49
Hallo,

schön und wo wirft er die Exception (Zeile)?

Die Fehlermeldung klingt so, als könnte es da in der Gegend ein Problem geben:
Delphi-Quellcode:
excelApp.ConnectKind := ckRunningInstance;
excelBook.ConnectKind := ckRunningInstance;
excelSheet.ConnectKind := ckRunningInstance;
Zugegeben: Mein Code ist mit Delphi6 geschrieben und läuft momentan gegen Excel 2003 SP2.
Du nutzt eine neuere Excelversion und höchstwahrscheinlich auch eine neuer Delphiversion (gib' die doch mal in Deinem Profil ein), da gibt es keine Garantie, dass da noch irgendwas unverändert funktioniert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz