Ovaj detaljni vodič opisuje kako se povezati s Microsoft Excel-om, dohvatiti podatke s lista i omogućiti uređivanje podataka pomoću DBGrid-a. Pronaći ćete i popis najčešćih pogrešaka koje se mogu pojaviti u procesu, kao i način na koji ih možete riješiti.
Što je pokriveno ispod:
- Metode za prijenos podataka između Excel-a i Delphi. Kako se povezati s Excelom TEŠKOĆA (ActiveX podatkovni objekti) i Delphi.
- Izrada Excel uređivača proračunskih tablica pomoću Delphija i ADO-a
- Dohvaćanje podataka iz Excela. Kako referencirati tablicu (ili raspon) u Excelovoj radnoj knjizi.
- Rasprava o vrstama polja (stupca) u Excelu
- Kako izmijeniti Excel listove: uređivati, dodavati i brisati retke.
- Prijenos podataka iz Delphi aplikacije u Excel. Kako stvoriti radni list i napuniti ga prilagođenim podacima iz MS Access baze podataka.
Kako se povezati s Microsoft Excel-om
Microsoft Excel moćan je kalkulator proračunskih tablica i alat za analizu podataka. Budući da se redovi i stupci Excel radnog lista usko odnose na retke i stupce tablice baze podataka, mnogi programeri smatraju prikladnim da svoje podatke prenose u radnu knjižicu Excela radi analize; i nakon toga preuzmite podatke natrag u aplikaciju.
Najčešći pristup razmjeni podataka između vaše aplikacije i Excela je Automatizacija. Automatizacija pruža način čitanja Excel podataka pomoću modela Excel-ovog objekta kako bi se uronio u radni list, izvadio njegove podatke i prikazao unutar komponente poput mreže, naime DBGrid ili StringGrid.
Automatizacija vam daje najveću fleksibilnost za lociranje podataka u radnoj knjizi kao i mogućnost formatiranja radnog lista i izvršavanja različitih postavki u vrijeme izvođenja.
Za prijenos podataka u Excel i iz njega bez automatizacije možete koristiti druge metode kao što su:
- Zapišite podatke u tekstualnu datoteku ograničenu zarezom i pustite Excel da ih rastavi u ćelije
- Prijenos podataka pomoću DDE-a (dinamička razmjena podataka)
- Prenesite svoje podatke na i sa radnog lista pomoću ADO
Prijenos podataka pomoću ADO
Budući da je Excel kompatibilan s JET OLE DB-om, možete se povezati s njim pomoću Delphija pomoću ADO (dbGO ili AdoExpress) i zatim dohvatiti podaci radnog lista u ADO skupu podataka izdavanjem SQL upita (baš kao što biste otvorili skup podataka prema bilo kojoj bazi podataka stol).
Na taj su način sve metode i značajke objekta ADODataset dostupne za obradu Excel podataka. Drugim riječima, pomoću ADO komponenti možete sastaviti aplikaciju koja kao baza podataka može koristiti radnu knjigu Excel. Druga važna činjenica je da je Excel izvan procesa ActiveX poslužitelj. ADO pokreće postupak i štedi režijske troškove skupih izvanprocesnih poziva.
Kad se povežete s Excelom pomoću ADO-a, možete razmjenjivati neobrađene podatke u i iz radne knjige. ADO veza ne može se koristiti za oblikovanje lista ili primjenu formula u ćelije. Međutim, ako prenesete svoje podatke na unaprijed formatirani radni list, format se zadržava. Nakon što se podaci dodaju iz vaše prijave u Excel, možete izvršiti svako uvjetno oblikovanje koristeći (unaprijed snimljeni) makronaredbu na radnom listu.
Možete se povezati s Excelom pomoću ADO-a s dva OLE DB davatelja koja su dio MDAC-a: Microsoft Jet OLE DB Provider ili Microsoft OLE DB Provider za ODBC upravljačke programe. Usredotočit ćemo se na Jet OLE DB Provider koji se može koristiti za pristup podacima u radnim knjigama Excela putem instalacijskih pokretača indeksiranog sekvencijalnog pristupa (ISAM).
Savjet: Vidi Tečaj početnika za Delfi Programiranje baze podataka ADO-a ako ste novi u ADO-u.
Magic ConnectionString
Svojstvo ConnectionString govori ADO-u kako se povezati s izvorom podataka. Vrijednost koja se koristi za ConnectionString sastoji se od jednog ili više argumenata koje ADO koristi za uspostavljanje veze.
U Delfima komponenta TADOConnection inkapsulira objekt ADO veze; može ga dijeliti više ADO baza podataka (TADOTable, TADOQuery itd.) komponenta kroz svoja svojstva povezivanja.
Kako biste se povezali s Excelom, valjani niz povezivanja uključuje samo dva dodatna podatka - puni put do radne knjige i verziju datoteke Excela.
Legitimni vezni niz mogao bi izgledati ovako:
ConnectionString: = 'Pružatelj = Microsoft. Jet. OLEDB.4.0; Izvor podataka = C: \ MyWorkBooks \ myDataBook.xls; Proširena svojstva = Excel 8.0; ';
Pri povezivanju s vanjskim formatom baze podataka koji podržava Jet, treba postaviti proširena svojstva veze. U našem slučaju prilikom povezivanja s Excel "bazom podataka" proširena svojstva koriste se za postavljanje verzije datoteke Excel.
Za radnu knjigu u Excelu 95 ova vrijednost je "Excel 5.0" (bez navodnika); koristite "Excel 8.0" za Excel 97, Excel 2000, Excel 2002 i ExcelXP.
Važno: Morate koristiti Jet 4.0 Provider jer Jet 3.5 ne podržava ISAM upravljačke programe. Ako postavite Jet Provider na verziju 3.5, dobit ćete pogrešku "Ne mogu pronaći instaliran ISAM".
Drugo Jet prošireno svojstvo je "HDR =". "HDR = Da" znači da postoji niz zaglavlja u rasponu, tako da Jet neće uključiti prvi red odabira u skup podataka. Ako je naveden "HDR = Ne", davatelj će u podatkovni skup uključiti prvi red raspona (ili imenovani raspon).
Prvi redak u rasponu smatra se zadnjim redom zaglavlja ("HDR = Da"). Stoga, ako imate naslov stupaca, ne morate specificirati ovu vrijednost. Ako nemate zaglavlje stupaca, morate navesti "HDR = Ne".
Sad kad ste sve spremni, ovo je dio u kojem stvari postaju zanimljive jer smo sada spremni za neki kôd. Pogledajmo kako stvoriti jednostavan uređivač proračunskih tablica u Excelu pomoću Delphija i ADO-a.
Bilješka: Nastavite i ako vam nedostaje znanje o ADO i Jet programiranju. Kao što ćete vidjeti, uređivanje Excelove radne knjige jednostavno je kao i uređivanje podataka iz bilo koje standardne baze podataka.