Bearbeiten von Excel-Tabellen mit Delphi und ADO

In dieser schrittweisen Anleitung wird beschrieben, wie Sie eine Verbindung zu Microsoft Excel herstellen, Blattdaten abrufen und die Bearbeitung der Daten mithilfe von DBGrid aktivieren. Dort finden Sie auch eine Liste der häufigsten Fehler, die im Prozess auftreten können, sowie Informationen zum Umgang mit ihnen.

Was ist unten abgedeckt:

  • Methoden zur Datenübertragung zwischen Excel und Delphi. Herstellen einer Verbindung zu Excel mit ADO (ActiveX Data Objects) und Delphi.
  • Erstellen eines Excel-Tabellen-Editors mit Delphi und ADO
  • Abrufen der Daten aus Excel. Referenzieren einer Tabelle (oder eines Bereichs) in einer Excel-Arbeitsmappe.
  • Eine Diskussion über Excel-Feldtypen (Spalten)
  • So ändern Sie Excel-Tabellen: Bearbeiten, Hinzufügen und Löschen von Zeilen.
  • Übertragen von Daten aus einer Delphi-Anwendung nach Excel. So erstellen Sie ein Arbeitsblatt und füllen es mit benutzerdefinierten Daten aus einer MS Access-Datenbank.

Herstellen einer Verbindung mit Microsoft Excel

Microsoft Excel ist ein leistungsstarkes Tabellenkalkulations- und Datenanalysetool. Da Zeilen und Spalten eines Excel-Arbeitsblatts eng mit den Zeilen und Spalten einer Datenbanktabelle verknüpft sind, ist es für viele Entwickler angemessen, ihre Daten zu Analysezwecken in eine Excel-Arbeitsmappe zu übertragen. und rufen Sie die Daten anschließend wieder in der Anwendung ab.

Der am häufigsten verwendete Ansatz für den Datenaustausch zwischen Ihrer Anwendung und Excel ist Automatisierung. Die Automatisierung bietet die Möglichkeit, Excel-Daten mithilfe des Excel-Objektmodells zu lesen, in das Arbeitsblatt einzutauchen, seine Daten zu extrahieren und in einer rasterähnlichen Komponente, nämlich DBGrid oder StringGrid, anzuzeigen.

Die Automatisierung bietet Ihnen die größte Flexibilität beim Auffinden der Daten in der Arbeitsmappe sowie die Möglichkeit, das Arbeitsblatt zu formatieren und zur Laufzeit verschiedene Einstellungen vorzunehmen.

Um Ihre Daten ohne Automatisierung nach und von Excel zu übertragen, können Sie andere Methoden verwenden, z.

  • Schreiben Sie Daten in eine durch Kommas getrennte Textdatei und lassen Sie Excel die Datei in Zellen analysieren
  • Datenübertragung mit DDE (Dynamic Data Exchange)
  • Übertragen Sie Ihre Daten mit ADO von und zu einem Arbeitsblatt

Datenübertragung mit ADO

Da Excel mit JET OLE DB kompatibel ist, können Sie über ADO (dbGO oder AdoExpress) eine Verbindung mit Delphi herstellen und anschließend die Daten des Arbeitsblatts in ein ADO-Dataset abrufen, indem Sie eine SQL-Abfrage absetzen (genau wie beim Öffnen eines Datasets für eine beliebige Datenbanktabelle)..

Auf diese Weise stehen alle Methoden und Funktionen des ADODataset-Objekts zur Verarbeitung der Excel-Daten zur Verfügung. Mit anderen Worten, mithilfe der ADO-Komponenten können Sie eine Anwendung erstellen, die eine Excel-Arbeitsmappe als Datenbank verwenden kann. Eine weitere wichtige Tatsache ist, dass Excel ein prozessexterner ActiveX-Server ist. ADO wird in-process ausgeführt und spart den Aufwand für kostspielige prozessexterne Anrufe.

Wenn Sie mit ADO eine Verbindung zu Excel herstellen, können Sie nur Rohdaten von und zu einer Arbeitsmappe austauschen. Eine ADO-Verbindung kann nicht zum Formatieren von Arbeitsblättern oder zum Implementieren von Formeln für Zellen verwendet werden. Wenn Sie Ihre Daten jedoch in ein vorformatiertes Arbeitsblatt übertragen, bleibt das Format erhalten. Nachdem die Daten aus Ihrer Anwendung in Excel eingefügt wurden, können Sie eine bedingte Formatierung mithilfe eines (zuvor aufgezeichneten) Makros im Arbeitsblatt durchführen.

Sie können mithilfe von ADO mit den beiden OLE DB-Anbietern, die Teil von MDAC sind, eine Verbindung zu Excel herstellen: Microsoft Jet OLE DB-Anbieter oder Microsoft OLE DB-Anbieter für ODBC-Treiber. Wir konzentrieren uns auf den Jet OLE DB-Provider, mit dem über installierbare ISAM-Treiber (Indexed Sequential Access Method) auf Daten in Excel-Arbeitsmappen zugegriffen werden kann.

Trinkgeld: Wenn Sie ADO noch nicht kennen, lesen Sie den Einsteigerkurs zu Delphi ADO Database Programming.

Die ConnectionString-Magie

Die ConnectionString-Eigenschaft teilt ADO mit, wie eine Verbindung zur Datenquelle hergestellt werden soll. Der für ConnectionString verwendete Wert besteht aus einem oder mehreren Argumenten, mit denen ADO die Verbindung herstellt.

In Delphi kapselt die TADOConnection-Komponente das ADO-Verbindungsobjekt. Es kann von mehreren ADO-Dataset-Komponenten (TADOTable, TADOQuery usw.) über deren Verbindungseigenschaften gemeinsam genutzt werden.