In deze stapsgewijze handleiding wordt beschreven hoe u verbinding kunt maken met Microsoft Excel, bladgegevens kunt ophalen en de gegevens kunt bewerken met behulp van DBGrid. U vindt ook een lijst met de meest voorkomende fouten die tijdens het proces kunnen optreden, plus hoe u hiermee kunt omgaan.
Wat hieronder wordt behandeld:
Microsoft Excel is een krachtige spreadsheetcalculator en tool voor gegevensanalyse. Aangezien rijen en kolommen van een Excel-werkblad nauw verband houden met de rijen en kolommen van een databasetabel, vinden veel ontwikkelaars het gepast om hun gegevens voor analyse naar een Excel-werkmap te transporteren; en daarna gegevens terughalen naar de toepassing.
De meest gebruikte methode voor gegevensuitwisseling tussen uw toepassing en Excel is Automatisering. Automatisering biedt een manier om Excel-gegevens te lezen met behulp van het Excel-objectmodel om in het werkblad te duiken, de gegevens te extraheren en weer te geven in een rasterachtige component, namelijk DBGrid of StringGrid.
Automatisering geeft u de grootste flexibiliteit voor het lokaliseren van de gegevens in de werkmap, evenals de mogelijkheid om het werkblad op te maken en verschillende instellingen te maken tijdens runtime.
Om uw gegevens zonder automatisering van en naar Excel over te dragen, kunt u andere methoden gebruiken, zoals:
Omdat Excel JET OLE DB-compatibel is, kunt u er verbinding mee maken met Delphi via ADO (dbGO of AdoExpress) en vervolgens de werkbladgegevens ophalen in een ADO-gegevensset door een SQL-query uit te voeren (net zoals u een gegevensset tegen een databasetabel zou openen).
Op deze manier zijn alle methoden en functies van het ADODataset-object beschikbaar om de Excel-gegevens te verwerken. Met andere woorden, met behulp van de ADO-componenten kunt u een applicatie bouwen die een Excel-werkmap als database kan gebruiken. Een ander belangrijk feit is dat Excel een out-of-process ActiveX-server is. ADO voert een proces uit en bespaart de overhead op kostbare out-of-process-oproepen.
Wanneer u via ADO verbinding maakt met Excel, kunt u alleen onbewerkte gegevens van en naar een werkmap uitwisselen. Een ADO-verbinding kan niet worden gebruikt voor bladopmaak of het implementeren van formules in cellen. Als u uw gegevens echter overbrengt naar een werkblad dat vooraf is opgemaakt, blijft de indeling behouden. Nadat de gegevens vanuit uw toepassing in Excel zijn ingevoegd, kunt u elke voorwaardelijke opmaak uitvoeren met een (vooraf opgenomen) macro in het werkblad.
U kunt via ADO verbinding maken met Excel met de twee OLE DB Providers die deel uitmaken van MDAC: Microsoft Jet OLE DB Provider of Microsoft OLE DB Provider voor ODBC-stuurprogramma's. We zullen ons richten op Jet OLE DB Provider, die kan worden gebruikt om toegang te krijgen tot gegevens in Excel-werkmappen via installeerbare ISAM-stuurprogramma's (Indexed Sequential Access Method).
Tip: Zie de beginnerscursus voor Delphi ADO-databaseprogrammering als je nieuw bent bij ADO.
De eigenschap ConnectionString vertelt ADO hoe verbinding moet worden gemaakt met de gegevensbron. De waarde die wordt gebruikt voor ConnectionString bestaat uit een of meer argumenten die ADO gebruikt om de verbinding tot stand te brengen.
In Delphi omvat de component TADOConnection het ADO-verbindingsobject; het kan worden gedeeld door meerdere ADO-gegevensset (TADOTable, TADOQuery, etc.) componenten via hun verbindingseigenschappen.