Editarea de foi Excel cu Delphi și ADO

Acest ghid pas cu pas descrie cum să vă conectați la Microsoft Excel, să recuperați foile de date ș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 ADO (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 a bazei 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.

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 cartea de muncă, 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 recuperați 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ărui tabel de baze de date).

Î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 că Excel este un server ActiveX fără proces. 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ă) în foaia de lucru.

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

Bacsis: Consultați Cursul pentru începători la Delphi Programarea bazelor 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 partajat de mai multe componente ADO (TADOTable, TADOQuery etc.) prin proprietățile de conexiune.