Få tilgang til og administrere MS Excel-ark med Delphi

click fraud protection

Denne trinn-for-trinn-guiden beskriver hvordan du kobler til Microsoft Excel, henter arkdata og aktiverer redigering av dataene ved hjelp av DBGrid. Du finner også en liste over de vanligste feilene som kan vises i prosessen, i tillegg til hvordan du håndterer dem.

Hva er dekket nedenfor:

  • Metoder for overføring av data mellom Excel og Delphi. Hvordan koble til Excel med EN GJØR (ActiveX Data Objects) og Delphi.
  • Opprette en Excel-regnearkeditor ved hjelp av Delphi og ADO
  • Henter dataene fra Excel. Slik refererer du til en tabell (eller rekkevidde) i en Excel-arbeidsbok.
  • En diskusjon om Excel-felt (kolonne) typer
  • Slik endrer du Excel-ark: rediger, legg til og slett rader.
  • Overføre data fra et Delphi-program til Excel. Hvordan lage et regneark og fylle det med tilpassede data fra en MS Access-database.

Hvordan koble til Microsoft Excel

Microsoft Excel er et kraftig regnearkskalkulator og dataanalyseverktøy. Siden rader og kolonner i et Excel-regneark henger nøye sammen med radene og kolonnene i en databasetabell, mange utviklere synes det er passende å transportere dataene sine til en Excel-arbeidsbok for analyseformål; og hente data tilbake til applikasjonen etterpå.

instagram viewer

Den mest brukte tilnærmingen til datautveksling mellom applikasjonen din og Excel er Automasjon. Automasjon gir en måte å lese Excel-data ved å bruke Excel Object Model for å dykke ned i arbeidsarket, trekke ut dataene og vise dem inne i en rutenettlignende komponent, nemlig DBGrid eller StringGrid.

Automatisering gir deg størst fleksibilitet for å finne dataene i arbeidsboken, samt muligheten til å formatere regnearket og gjøre forskjellige innstillinger på kjøretid.

For å overføre dataene dine til og fra Excel uten automatisering, kan du bruke andre metoder som:

  • Skriv data i en kommaavgrenset tekstfil, og la Excel parse filen til celler
  • Overfør data ved å bruke DDE (Dynamic Data Exchange)
  • Overfør dataene dine til og fra et regneark ved å bruke ADO

Dataoverføring ved hjelp av ADO

Siden Excel er JET OLE DB-kompatibelt, kan du koble til det med Delphi ved å bruke ADO (dbGO eller AdoExpress) og deretter hente regnearkets data i et ADO-datasett ved å utstede et SQL-spørsmål (akkurat som om du vil åpne et datasett mot en hvilken som helst database bord).

På denne måten er alle metodene og funksjonene til ADODataset-objektet tilgjengelige for å behandle Excel-dataene. Med andre ord, ved å bruke ADO-komponentene kan du bygge et program som kan bruke en Excel-arbeidsbok som database. Et annet viktig faktum er at Excel er en out-of-prosess ActiveX-server. ADO kjører i prosess og sparer overhead av kostbare samtaler uten prosess.

Når du kobler deg til Excel ved hjelp av ADO, kan du bare utveksle rå data til og fra en arbeidsbok. En ADO-tilkobling kan ikke brukes til arkformatering eller implementering av formler på celler. Hvis du imidlertid overfører dataene dine til et regneark som er forhåndsformatert, opprettholdes formatet. Etter at dataene er satt inn fra applikasjonen din til Excel, kan du utføre all betinget formatering ved hjelp av en (forhåndsinnspilt) makro i regnearket.

Du kan koble til Excel ved å bruke ADO med de to OLE DB-leverandørene som er en del av MDAC: Microsoft Jet OLE DB-leverandør eller Microsoft OLE DB-leverandør for ODBC-drivere. Vi fokuserer på Jet OLE DB-leverandør, som kan brukes til å få tilgang til data i Excel-arbeidsbøker gjennom installerte drivere med indeksert sekvensiell tilgangsmetode (ISAM).

Tips: Se Nybegynnerkurs til Delphi ADO-databaseprogrammering hvis du er ny på ADO.

The ConnectionString Magic

ConnectionString-egenskapen forteller ADO hvordan du kobler til datakilden. Verdien som brukes for ConnectionString består av ett eller flere argumenter ADO bruker for å etablere forbindelsen.

I Delphi innkapsler TADOConnection-komponenten ADO-tilkoblingsobjektet; det kan deles av flere ADO-datasett (TADOTable, TADOQuery, etc.) -komponenter gjennom sine Connection-egenskaper.

For å koble til Excel, inkluderer en gyldig tilkoblingsstreng bare ytterligere to informasjonsstykker - hele banen til arbeidsboka og Excel-filversjonen.

En legitim tilkoblingsstreng kan se slik ut:

ConnectionString: = 'Provider = Microsoft. Jetfly. OLEDB.4.0; Datakilde = C: \ MyWorkBooks \ myDataBook.xls; Utvidede egenskaper = Excel 8.0; ';

Når du kobler til et eksternt databaseformat som støttes av Jet, må de utvidede egenskapene for tilkoblingen settes. I vårt tilfelle, når du kobler til en Excel-database, brukes utvidede egenskaper til å angi Excel-filversjonen.

For en Excel95-arbeidsbok er denne verdien "Excel 5.0" (uten anførselstegn); bruk "Excel 8.0" for Excel 97, Excel 2000, Excel 2002 og ExcelXP.

Viktig: Du må bruke Jet 4.0-leverandøren siden Jet 3.5 ikke støtter ISAM-driverne. Hvis du setter Jet Provider til versjon 3.5, vil du få feilen "Kunne ikke finne installerbar ISAM".

En annen utvidet Jet-eiendom er "HDR =". "HDR = Ja" betyr at det er en overskriftsrekke i området, så Jet vil ikke inkludere den første raden i utvalget i datasettet. Hvis "HDR = Nei" er spesifisert, vil leverandøren inkludere den første raden i området (eller navngitt område) i datasettet.

Den første raden i et område anses som overskriftsrad som standard ("HDR = Ja"). Derfor, hvis du har kolonneoverskrift, trenger du ikke å spesifisere denne verdien. Hvis du ikke har kolonneoverskrifter, må du spesifisere "HDR = Nei".

Nå som du er i orden, er dette den delen der ting blir interessante siden vi nå er klare for en kode. La oss se hvordan du oppretter en enkel Excel-regnearkeditor ved hjelp av Delphi og ADO.

Merk: Du bør fortsette selv om du mangler kunnskap om ADO og Jet-programmering. Som du vil se, er redigering av en Excel-arbeidsbok like enkel som å redigere data fra hvilken som helst standard database.

instagram story viewer