Ta navodila po korakih opisujejo, kako se povezati z Microsoft Excel, pridobiti podatke stanja in omogočiti urejanje podatkov s pomočjo DBGrid. Našli boste tudi seznam najpogostejših napak, ki se lahko pojavijo v postopku, in način njihovega odpravljanja.
Kaj je zajeto spodaj:
- Metode za prenos podatkov med Excelom in Delphi. Kako se povezati z Excelom ADO (ActiveX podatkovni objekti) in Delphi.
- Ustvarjanje urejevalnika preglednic Excela z uporabo Delphija in ADO-ja
- Pridobivanje podatkov iz Excela. Kako sklicevati na tabelo (ali obseg) v delovnem zvezku Excela.
- Razprava o vrstah polja (stolpca) v Excelu
- Kako spremeniti liste Excela: urediti, dodati in izbrisati vrstice.
- Prenos podatkov iz aplikacije Delphi v Excel. Kako ustvariti delovni list in ga napolniti s podatki po meri iz baze podatkov MS Access.
Kako se povezati z Microsoft Excel
Microsoft Excel je zmogljiv kalkulator preglednic in orodje za analizo podatkov. Ker se vrstice in stolpci delovnega lista v Excelu tesno nanašajo na vrstice in stolpce tabele baze podatkov, mnogi razvijalci se zdijo primerni za prenos podatkov v delovni zvezek Excela; in nato potegnite podatke nazaj v aplikacijo.
Najpogosteje uporabljen pristop k izmenjavi podatkov med vašo aplikacijo in Excelom je Avtomatizacija. Avtomatizacija omogoča način branja Excelovih podatkov z uporabo Excelovega objektnega modela, da se potopite v delovni list, izvlečete njegove podatke in jih prikažete znotraj komponente podobne mreži, in sicer DBGrid ali StringGrid.
Avtomatizacija vam omogoča največjo prožnost pri iskanju podatkov v delovnem zvezku, kot tudi možnost formatiranja delovnega lista in nastavitve različnih nastavitev v času izvajanja.
Za prenos podatkov v in iz Excela brez avtomatizacije lahko uporabite druge metode, kot so:
- Podatke zapišite v besedilno datoteko, omejeno z vejico, in Excel datoteko razčleni v celice
- Prenos podatkov s pomočjo DDE (Dynamic Data Exchange)
- Prenesite svoje podatke na in z delovnega lista z ADO
Prenos podatkov z ADO
Ker je Excel združljiv z JET OLE DB, se lahko z njim povežete z Delphi z ADO (dbGO ali AdoExpress) in nato pridobite podatki delovnega lista v nabor podatkov ADO z izdajo poizvedbe SQL (tako kot bi odprli nabor podatkov pred katero koli bazo podatkov tabela).
Na ta način so za obdelavo podatkov Excela na voljo vse metode in značilnosti objekta ADODataset. Z drugimi besedami, z uporabo komponent ADO lahko sestavite aplikacijo, ki lahko kot bazo podatkov uporablja delovni zvezek Excela. Pomembno dejstvo je tudi, da je Excel izven procesa ActiveX strežnik. ADO teče med postopkom in prihrani režijske stroške dragih klicev, ki niso v postopku.
Ko se s programom ADO povežete z Excelom, lahko izmenjate samo surove podatke v in iz delovnega zvezka. ADO povezave ni mogoče uporabiti za oblikovanje listov ali izvajanje formul v celice. Če pa svoje podatke prenesete na predhodno oblikovan delovni list, se oblika ohrani. Ko so podatki iz vaše aplikacije vstavljeni v Excel, lahko izvedete katero koli pogojno oblikovanje z uporabo (vnaprej posnetega) makra na delovnem listu.
Z Excelom se lahko povežete z ADO z dvema ponudnikoma OLE DB, ki sta del MDAC: Ponudnik DB Microsoft Jet OLE ali Ponudnik DB OLE DB za gonilnike ODBC. Osredotočili se bomo na ponudnika Jet OLE DB, ki ga lahko uporabljamo za dostop do podatkov v delovnih knjižicah Excela prek namestljivih gonilnikov indeksiranega zaporednega dostopa (ISAM).
Namig: Glej Tečaj za začetnike v Delfih Programiranje zbirke podatkov ADO, če niste nov ADO.
Magic ConnectionString
Lastnost ConnectionString pove ADO, kako se povezati z virom podatkov. Vrednost, ki se uporablja za ConnectionString, je sestavljena iz enega ali več argumentov, ki jih ADO uporabi za vzpostavitev povezave.
V Delfih komponenta TADOConnection zajema povezavo objekta ADO; lahko ga deli več komponent ADO (TADOTable, TADOQuery itd.) prek svojih lastnosti povezave.
Za povezavo z Excelom veljavni povezovalni niz vključuje samo dva dodatna podatka - celotno pot do delovnega zvezka in različico datoteke Excela.
Upravičen niz povezave lahko izgleda tako:
ConnectionString: = 'Ponudnik = Microsoft. Jet. OLEDB.4.0; Vir podatkov = C: \ MyWorkBooks \ myDataBook.xls; Razširjene lastnosti = Excel 8.0; ';
Pri povezovanju z zunanjo obliko baze podatkov, ki jo podpira Jet, je treba nastaviti razširjene lastnosti povezave. V našem primeru se pri povezovanju z Excelovo bazo podatkov uporabljajo razširjene lastnosti za nastavitev različice datoteke Excel.
V delovnem zvezku programa Excel95 je ta vrednost "Excel 5.0" (brez narekovajev); uporabite "Excel 8.0" za Excel 97, Excel 2000, Excel 2002 in ExcelXP.
Pomembno: Uporabiti morate ponudnika Jet 4.0, saj Jet 3.5 ne podpira gonilnikov ISAM. Če Jet Provider nastavite na različico 3.5, boste prejeli napako »Ne najdem namestljivega ISAM-a«.
Druga razširjena lastnost Jet je "HDR =". "HDR = Da" pomeni, da je v razponu vrstico z glavo, zato Jet ne bo vključil prve vrstice izbire v nabor podatkov. Če je določeno "HDR = Ne", bo ponudnik v nabor podatkov vključil prvo vrstico obsega (ali imenovanega obsega).
Prva vrstica v območju se privzeto šteje za vrstico glave ("HDR = Da"). Če imate naslov stolpca, vam te vrednosti ni treba določiti. Če nimate naslovov stolpcev, morate določiti "HDR = Ne".
Zdaj, ko ste vse pripravljeni, je to del, ko stvari postanejo zanimive, saj smo zdaj pripravljeni na neko kodo. Poglejmo, kako ustvariti preprost urejevalnik preglednic Excela s pomočjo Delphija in ADO-ja.
Opomba: Nadaljujte, tudi če nimate znanja o programiranju ADO in Jet. Kot boste videli, je urejanje Excelove delovne knjižice tako preprosto kot urejanje podatkov iz katere koli standardne baze podatkov.