Accesarea și administrarea de foi Excel Excel cu Delphi

Acest ghid pas cu pas descrie cum să vă conectați la Microsoft Excel, să preluați date de foaie și să activați editarea datelor folosind DBGrid. Veți găsi, de asemenea, o listă cu cele mai frecvente erori care pot apărea în proces, precum și cum să le faceți față.

Ce este acoperit mai jos:

  • Metode de transfer de date între Excel și Delphi. Cum să vă conectați la Excel cu ZGOMOT (ActiveX Data Objects) și Delphi.
  • Crearea unui editor de foi de calcul Excel utilizând Delphi și ADO
  • Preluarea datelor din Excel. Cum se face referire la un tabel (sau un interval) într-un manual de lucru Excel.
  • O discuție despre tipurile de câmp (coloană) Excel
  • Modificarea foilor Excel: editați, adăugați și ștergeți rândurile.
  • Transferul datelor dintr-o aplicație Delphi în Excel. Cum se creează o foaie de lucru și se completează cu date personalizate dintr-o bază de date MS Access.

Cum să vă conectați la Microsoft Excel

Microsoft Excel este un puternic instrument de calcul al foilor de calcul și de analiză a datelor. Întrucât rândurile și coloanele unei foi de lucru Excel se raportează strâns la rândurile și coloanele unei tabele de baze de date, mulți dezvoltatori consideră că este adecvat să-și transporte datele într-un registru de lucru Excel în scopuri de analiză; și preluați datele din nou în aplicație ulterior.

instagram viewer

Cea mai frecventă abordare a schimbului de date între aplicația dvs. și Excel este Automatizare. Automatizarea oferă o modalitate de a citi datele Excel utilizând modelul de obiect Excel pentru a vă scufunda în foaia de lucru, a extrage datele sale și a le afișa într-o componentă asemănătoare grilei, și anume DBGrid sau StringGrid.

Automatizarea vă oferă cea mai mare flexibilitate pentru localizarea datelor în registrul de lucru, precum și posibilitatea de a formata foaia de lucru și de a face diverse setări în timpul rulării.

Pentru a transfera datele dvs. și de la Excel fără automatizare, puteți utiliza alte metode, cum ar fi:

  • Scrieți datele într-un fișier text delimitat de virgulă și lăsați Excel să analizeze fișierul în celule
  • Transferați date utilizând DDE (Dynamic Data Exchange)
  • Transferați datele dvs. și de la o foaie de lucru cu ADO

Transfer de date folosind ADO

Deoarece Excel este compatibil cu JET OLE DB, vă puteți conecta la Delphi folosind ADO (dbGO sau AdoExpress) și apoi puteți prelua datele foii de lucru într-un set de date ADO prin emiterea unei interogări SQL (la fel cum ați deschide un set de date împotriva oricărei baze de date masa).

În acest fel, toate metodele și caracteristicile obiectului ADODataset sunt disponibile pentru procesarea datelor Excel. Cu alte cuvinte, folosirea componentelor ADO vă permite să construiți o aplicație care poate utiliza ca bază de date o carte de lucru Excel. Un alt fapt important este faptul că Excel este un proces în afara procesului Server ActiveX. ADO rulează în proces și economisește cheltuielile generale ale apelurilor costisitoare în afara procesului.

Când vă conectați la Excel utilizând ADO, puteți schimba doar datele brute într-un registru de lucru. O conexiune ADO nu poate fi utilizată pentru formatarea foilor sau implementarea formulelor la celule. Cu toate acestea, dacă transferați datele dvs. pe o foaie de lucru preformatată, formatul este menținut. După ce datele sunt introduse din aplicația dvs. în Excel, puteți efectua orice formatare condiționată folosind o macrocomandă (preînregistrată) din foaia de lucru.

Vă puteți conecta la Excel utilizând ADO cu cele două furnizori OLE DB care fac parte din MDAC: Furnizor Microsoft Jet OLE DB sau Furnizor Microsoft OLE DB pentru driverele ODBC. Ne vom concentra pe Jet OLE DB Furnizor, care poate fi utilizat pentru a accesa datele din cărțile de lucru Excel prin drivere ISAM (Index Index Sequential Access Method).

Bacsis: Vezi Curs pentru începători la Delfi Programare de baze de date ADO dacă sunteți nou la ADO.

Magia ConnectionString

Proprietatea ConnectionString spune ADO cum să vă conectați la sursa de date. Valoarea utilizată pentru ConnectionString constă dintr-unul sau mai multe argumente pe care ADO le folosește pentru a stabili conexiunea.

În Delphi, componenta TADOConnection încapsulează obiectul de conexiune ADO; acesta poate fi împărtășit de mai multe componente ale setului de date ADO (TADOTable, TADOQuery, etc.) prin proprietățile lor de conexiune.

Pentru a vă conecta la Excel, o șir de conexiune validă implică doar două informații suplimentare - calea completă către cartea de lucru și versiunea de fișier Excel.

Un șir de legătură legitim ar putea arăta astfel:

ConnectionString: = 'Furnizor = Microsoft. Avion. OLEDB.4.0; Sursa de date = C: \ MyWorkBooks \ myDataBook.xls; Proprietăți extinse = Excel 8.0; ';

Când vă conectați la un format de bază de date extern acceptat de Jet, trebuie setate proprietățile extinse pentru conexiune. În cazul nostru, atunci când vă conectați la o bază de date Excel, proprietățile extinse sunt utilizate pentru a seta versiunea fișierului Excel.

Pentru o carte de lucru Excel95, această valoare este „Excel 5.0” (fără ghilimele); folosiți „Excel 8.0” pentru Excel 97, Excel 2000, Excel 2002 și ExcelXP.

Important: Trebuie să folosiți Furnizorul Jet 4.0 deoarece Jet 3.5 nu acceptă driverele ISAM. Dacă setați Jet Provider la versiunea 3.5, veți primi eroarea „Nu s-a putut găsi ISAM instalabil”.

O altă proprietate extinsă de Jet este „HDR =”. „HDR = Da” înseamnă că există un rând de antet în interval, astfel încât Jet-ul nu va include primul rând al selecției în setul de date. Dacă este specificat „HDR = nr”, atunci furnizorul va include primul rând al intervalului (sau intervalul numit) în setul de date.

Primul rând dintr-un interval este considerat implicit rândul antetului („HDR = Da”). Prin urmare, dacă aveți titlu de coloană, nu este necesar să specificați această valoare. Dacă nu aveți titluri de coloană, trebuie să specificați „HDR = Nu”.

Acum că sunteți toți pregătiți, aceasta este partea în care lucrurile devin interesante, deoarece suntem acum pregătiți pentru un anumit cod. Să vedem cum se poate crea un simplu editor Excel Spreadsheet folosind Delphi și ADO.

Notă: Ar trebui să continuați chiar dacă nu aveți cunoștințe despre programarea ADO și Jet. După cum veți vedea, editarea unui registru de lucru Excel este la fel de simplă ca editarea datelor din orice bază de date standard.