Dostęp do arkuszy MS Excel i zarządzanie nimi za pomocą Delphi

W tym przewodniku opisano krok po kroku, jak połączyć się z Microsoft Excel, odzyskać dane arkusza i umożliwić edycję danych za pomocą DBGrid. Znajdziesz także listę najczęstszych błędów, które mogą pojawić się w procesie, a także sposoby ich rozwiązywania.

Co obejmuje poniżej:

  • Metody przesyłania danych między Excelem a Delfy. Jak połączyć się z programem Excel za pomocą KOROWODY (ActiveX Data Objects) i Delphi.
  • Tworzenie edytora arkuszy kalkulacyjnych Excel za pomocą Delphi i ADO
  • Pobieranie danych z Excela. Jak odwoływać się do tabeli (lub zakresu) w skoroszycie programu Excel.
  • Dyskusja na temat typów pól (kolumn) Excela
  • Jak modyfikować arkusze Excela: edytuj, dodawaj i usuwaj wiersze.
  • Przesyłanie danych z aplikacji Delphi do Excela. Jak utworzyć arkusz roboczy i wypełnić go niestandardowymi danymi z bazy danych MS Access.

Jak połączyć się z Microsoft Excel

Microsoft Excel to potężne narzędzie do kalkulacji arkuszy kalkulacyjnych i analizy danych. Ponieważ wiersze i kolumny arkusza programu Excel są ściśle powiązane z wierszami i kolumnami tabeli bazy danych, wielu programistów uważa za właściwe przenoszenie swoich danych do skoroszytu programu Excel w celu analizy; i później wróć do aplikacji.

instagram viewer

Najczęściej stosowanym podejściem do wymiany danych między aplikacją a programem Excel jest Automatyzacja. Automatyzacja umożliwia odczyt danych w programie Excel za pomocą modelu obiektów Excel w celu zanurzenia się w arkuszu, wyodrębnienia danych i wyświetlenia ich w komponencie podobnym do siatki, a mianowicie DBGrid lub StringGrid.

Automatyzacja zapewnia największą elastyczność lokalizowania danych w skoroszycie, a także możliwość formatowania arkusza i wprowadzania różnych ustawień w czasie wykonywania.

Aby przenieść dane do iz programu Excel bez automatyzacji, możesz użyć innych metod, takich jak:

  • Zapisz dane w pliku tekstowym rozdzielanym przecinkami i pozwól programowi Excel parsować plik do komórek
  • Przesyłaj dane za pomocą DDE (dynamiczna wymiana danych)
  • Przenieś swoje dane do iz arkusza roboczego za pomocą ADO

Transfer danych za pomocą ADO

Ponieważ program Excel jest zgodny z JET OLE DB, możesz połączyć się z nim za pomocą Delphi przy użyciu ADO (dbGO lub AdoExpress), a następnie pobrać dane arkusza roboczego do zestawu danych ADO poprzez wysłanie zapytania SQL (tak jakbyś otworzył zestaw danych dla dowolnej bazy danych stół).

W ten sposób wszystkie metody i funkcje obiektu ADODataset są dostępne do przetwarzania danych Excel. Innymi słowy, użycie komponentów ADO pozwala zbudować aplikację, która może wykorzystywać skoroszyt programu Excel jako bazę danych. Innym ważnym faktem jest to, że Excel jest poza procesem Serwer ActiveX. ADO działa w trakcie procesu i pozwala zaoszczędzić koszty związane z kosztownymi połączeniami poza procesem.

Podczas łączenia się z programem Excel za pomocą ADO możesz wymieniać tylko surowe dane do i ze skoroszytu. Połączenia ADO nie można używać do formatowania arkusza ani implementowania formuł do komórek. Jeśli jednak przeniesiesz swoje dane do wstępnie sformatowanego arkusza, format zostanie zachowany. Po wstawieniu danych z aplikacji do programu Excel można przeprowadzić dowolne formatowanie warunkowe za pomocą (wstępnie zarejestrowanego) makra w arkuszu.

Możesz połączyć się z programem Excel za pomocą ADO z dwoma dostawcami OLE DB, które są częścią MDAC: Microsoft Jet OLE DB Provider lub Microsoft OLE DB Provider dla sterowników ODBC. Skoncentrujemy się na dostawcy Jet OLE DB Provider, który może być używany do uzyskiwania dostępu do danych w skoroszytach programu Excel za pomocą instalowalnych sterowników indeksowanej metody sekwencyjnego dostępu (ISAM).

Wskazówka: Zobacz Kurs dla początkujących do Delphi Programowanie baz danych ADO, jeśli dopiero zaczynasz przygodę z ADO.

The ConnectionString Magic

Właściwość ConnectionString informuje ADO, jak połączyć się ze źródłem danych. Wartość użyta dla ConnectionString składa się z jednego lub więcej argumentów używanych przez ADO do ustanowienia połączenia.

W Delphi komponent TADOConnection hermetyzuje obiekt połączenia ADO; może być współdzielony przez wiele zestawów danych ADO (TADOTable, TADOQuery itp.) poprzez ich właściwości połączenia.

Aby połączyć się z programem Excel, prawidłowy ciąg połączenia wymaga tylko dwóch dodatkowych informacji - pełnej ścieżki do skoroszytu i wersji pliku Excel.

Prawidłowy ciąg połączenia może wyglądać następująco:

ConnectionString: = 'Provider = Microsoft. Strumień. OLEDB.4.0; Źródło danych = C: \ MyWorkBooks \ myDataBook.xls; Rozszerzone właściwości = Excel 8.0; ';

Podczas łączenia się z zewnętrznym formatem bazy danych obsługiwanym przez Jet, należy ustawić rozszerzone właściwości połączenia. W naszym przypadku podczas łączenia się z „bazą danych Excel” do ustawienia wersji pliku Excel używane są właściwości rozszerzone.

W przypadku skoroszytu Excel95 ta wartość to „Excel 5.0” (bez cudzysłowów); użyj „Excel 8.0” dla Excel 97, Excel 2000, Excel 2002 i ExcelXP.

Ważny: Musisz użyć dostawcy Jet 4.0, ponieważ Jet 3.5 nie obsługuje sterowników ISAM. Jeśli ustawisz Jet Provider na wersję 3.5, pojawi się błąd „Nie można znaleźć instalowalnego ISAM”.

Inną rozszerzoną właściwością Jet jest „HDR =”. „HDR = Tak” oznacza, że ​​w zakresie znajduje się wiersz nagłówka, więc Jet nie uwzględni pierwszego wiersza zaznaczenia w zbiorze danych. Jeśli podano „HDR = Nie”, dostawca uwzględni pierwszy wiersz zakresu (lub nazwanego zakresu) w zbiorze danych.

Pierwszy wiersz w zakresie jest domyślnie uważany za wiersz nagłówka („HDR = Tak”). Dlatego jeśli masz nagłówek kolumny, nie musisz określać tej wartości. Jeśli nie masz nagłówków kolumn, musisz określić „HDR = Nie”.

Teraz, gdy wszystko jest gotowe, jest to część, w której sprawy stają się interesujące, ponieważ jesteśmy teraz gotowi na kod. Zobaczmy, jak utworzyć prosty edytor arkuszy kalkulacyjnych Excel za pomocą Delphi i ADO.

Uwaga: Powinieneś kontynuować, nawet jeśli nie masz wiedzy na temat programowania ADO i Jet. Jak zobaczysz, edycja skoroszytu programu Excel jest tak prosta, jak edycja danych z dowolnej standardowej bazy danych.