29.12.2019, Vladimír Klaus, navštíveno 2808x

Delphi
MS Excel

V diskuzních skupinách na Facebooku jsem narazil na dotaz, jak zpracovat Excel soubory v Delphi. V komentářích se objevilo neskutečné množství různých metod, většinou nefunkčních nebo příliš komplikovaných. Překvapivě tam nikdo neuvedl přímé databázové řešení, které bude popsáno v tomto článku. Navíc se jedná o elegantní a velice účinné řešení.

Jak přistoupit z Delphi k MS Excel souborům XLS(X), obr. 1

Jaké jsou tedy možnosti, jak se dostat k datům v Excelu z Delphi:

  • přeuložte XLS(X) do CSV a pak zpracujte jako textový soubor (pozor na kódování)
  • použijte například DevEx komponentu TdxSpreadSheet, která umí soubory nativně načíst, ale i zobrazit a provádět s nimi spoustu dalších operací, takže jde vlastně o takový vestavěný "Excel"
  • propojte se přes OLE přímo s nainstalovaným Excelem, otevřete v něm soubor a používejte další OLE funkce (odpovídající příkazům z Visual Basicu)
  • přistupte k souboru databázově

Pro databázový přístup budeme potřebovat klasické ADO komponenty, tedy TADOConnection, TADOTable a samozřejmě TDataSource a pro tyto účely i jednoduchý DBGrid. Aby bylo možné se napojit na MS Excel, je třeba mít tzv. zprostředkovatele, což je v tomto případě Microsoft Office 12.0 Access Database Engine OLE DB Provider.

Pokud tohoto poskytovatele nemáte, je třeba nainstalovat Microsoft Access Database Engine 2010 Redistributable.

Jak přistoupit z Delphi k MS Excel souborům XLS(X), obr. 2

Pak už jen vyplníte cestu k souboru, tedy zdroji dat a otestujete připojení.

Jak přistoupit z Delphi k MS Excel souborům XLS(X), obr. 3

Pokud je vše OK, nastavíte u tabulky Connection a vyberete TableName, což je v tomto případě název listu v Excelu. A také je třeba nastavit TableDirect:=true.

Jak přistoupit z Delphi k MS Excel souborům XLS(X), obr. 4

Do tabulky přidáte všechny sloupce a nastavíte, že je tabulka aktivní. Informace z Excelu by měly být ihned vidět.

Jak přistoupit z Delphi k MS Excel souborům XLS(X), obr. 5

A takto vypadají data v Excelu. Všimněte si, že i jinak formátované datumy (když to jsou opravdu datumy) se v předchozí mřížce zobrazí s odpovídajícím (zde českým) formátem a že se tedy s nimi opravdu pracuje jako s datumy, nikoliv jako s textovými řetězci.

Jak přistoupit z Delphi k MS Excel souborům XLS(X), obr. 6

Další práce s daty je už vlastně zcela jasná – pracuje se s nimi jako s normální databází/tabulkou, a to, že jde o data z Excelu, je vlastně úplně skryté.

Přístě si ukážeme, jak stejnou věc řešit ve Visual Studiu resp. v C#.

Zdroje: