Comunicarea cu MS Excel în Delfi folosind ole, asd-moale

Buna ziua dragi colegi!

Toți ne confruntăm mai devreme sau mai târziu, cu sarcinile de schimb de date cu aplicații MS Office. Unul dintre ei - aceasta este MS Excel. Și asta e despre interacțiunea cu produsul MS Office discutat în acest articol.

Una dintre modalitățile de a interacționa Delphi c MS Excel - este să se conecteze la ea ca obiect OLE.

Și primul lucru pe care avem nevoie pentru a verifica, iar dacă MS Excel este instalat pe calculatorul utilizatorului, în principiu.
Pentru aceasta vom folosi funcția CLSIDFromProgID. care caută în registru pentru CLSID ProgID trecut:
Ajutor de la MSDN: Metoda CLSIDFromProgID
Opțiuni:
pszProgID. POleStr - Un șir cu numele obiectului
CLSID. TCLSID - pointer la structura TGUID în care a transmis obiectul detectat;
se întoarce:
HRESULT - Rezultatul, care poate fi:
S_OK - obiectul este găsit;
CO_E_CLASSSTRING - CLSID înregistrată pentru ProgID este nevalid;
Eroare la CLSID scris registru - REGDB_E_WRITEREGDB.
Din aceste rezultate avem nevoie de S_OK.
scrie Funk Excel pentru a determina dacă utilizatorul este:

În cazul în care este instalat Excel, apoi se va conecta la acesta. Puteți face acest lucru în două moduri: GetActiveOleObject - Ia legătură într-o instanță deja în curs de Excel sau CreateOleObject - Creați o nouă instanță a Excel.
Dacă avem sarcina de a primi date de la un Excel care rulează. atunci trebuie să folosim prima opțiune, în alte cazuri, încercați să vă conectați, și, dacă nu, atunci vom crea.
2 Să scrie funcții pentru a conecta și de a începe o nouă XlsConnect XlsStart:
FXlsApp adăuga o variabilă de tip Variant. care va conține un link către obiectul Excel.

Acum puteți adăuga un buton pentru clic, care se conecta la MS Excel folosind funcții scrise:

În mod implicit, fereastra Excel este lansat în fundal. String FXlsApp.Visible: = true; Excel face fereastra vizibilă de fundal.

fereastra Excel ruleaza gol și doriți să adăugați un registru de lucru la ea. Acest lucru se face folosind metoda WorkBooks.Add. care adaugă un nou registru de lucru sau a deschis un anterior salvat, dacă specificați calea către fișierul.
Adăugați o procedură care se va face:

a adăugat Book, acum vom încerca să scrie ceva în ea.

În cazul în care Rând - indicele rând și Col - index pe o coloană care începe cu unul.

În cazul în care Range - matrice de celule, si A1 - familiare coordonatele celulei Excel.
După cum se poate specifica gama de coordonate. De exemplu, codul

completați numărul 5, toate celulele cu A3 pe A10. și codul

oferă aceeași gamă de culoare verde deschis.
În direcția opusă, care este de a obține date din Excel. Acesta funcționează în același mod. rând

Afișează un mesaj cu conținutul celulei cu coordonatele: String = 5, coloana = 1.

Odată ce am făcut necesare noi manipularea Excel. putem salva cartea rezultând într-un fișier cu următoarea comandă:

În cazul în care ActiveWorkbook - cartea actuale.
Și pentru a închide comanda aplicație Excel:

Cum de a înțelege această oportunitate de control Excel din Delphi nu sunt limitate. Și există o modalitate destul de simplu pentru a învăța cum să efectueze acțiunea necesare cu Excel de la Delphi.
Se numește - Macrocomenzi.

Să ne uităm la mai mult că este așa, el ne-a scris aici:
Cu Selection - pentru a selecta intervalul de proprietăți personalizate:
HorizontalAlignment = xlCenter - orientare orizontală = centru.
VerticalAlignment = xlBottom - orientare verticală - de-a lungul marginii de jos.
WrapText = Fals - Încadrați text spune - off.
Orientare = 0 - Orientare 0 grade.
AddIndent = Fals - Utilizarea indentare / oprire automată.
IndentLevel = 0 - nivelul de indentare 0.
ShrinkToFit = Fals - Comprimare coloana Dimensiunea textului de pornire / oprire.
ReadingOrder = xlContext - Procedura pentru citirea contextului.
MergeCells = False - au fuzionat celule on / off
Cu End - End secțiune cu o gamă dedicată.
Selection.Merge - Merge intervalul selectat.

Acum vom încerca să combine celulele din Delphi:

Selectați intervalul dorit de noi.

Merge celule proprietăți dorite. Sau folosind metoda:

În acest fel puteți obține codul pentru aproape orice manipulare necesară.
Și dacă unele proprietăți sau metoda ridică întrebări, puteți obține ajutor pe MSDN.

Notă particularitatea de a lucra cu matrice în VBA. Indicii de matrice în Delphi rândul lor, între paranteze drepte, în timp ce în VBA acestea vor fi în runda. Și codul în Delphi

în VBA va arăta

Mai jos este un FAQ mic pe interacțiunea cu Excel din Delphi

Cum se determina valorile constantelor în Excel pentru utilizarea în Delphi?

Cum se dezactivează mesajele din concluzii Excel?

Cum se obține o listă a cărților Excel?

Cum de a opri grila?