PHP v spolupráci s MS Excel

Začíname

OK, tak čo to tu mame. Tento seminár/web pojednáva o skriptovacom jazyku PHP, niečo málo a základoch ale hlavne o sprístupnení Excelovskej tabuľky pre tento jazyk.
Takže najprv by sme mohli začat inštaláciou balíčka EasyPHP (ktorý obsahuje Apache, PHP a MySQL) zo stránky www.easyphp.org. Existujú aj ine napr. PHP Home Edition alebo pre skusenejších samostatná inštalácia Apacha a PHP z ich domovských stránok. Po uspešnom nainštalovaní by na vašom počítači mal korektne fungovat webserver Apache, databáza MySQL a skriptovací jazyk PHP. Všetko v najnovších verziách, vzhľadom na bezpečnosť, pripomínam.

Čo to dokáže

Mali by sme dosiahnuť jednej veci, a to aby sme mohli s Excelovským súborom pracovať ako s SQL databázou. To znamená aby sme mohli používať príkazy ako je SELECT, INSERT, UPDATE alebo DELETE. Dosiahnuť sa to dá mnohými spôsobmy ale ako najjednoduchší (ale nie najlepší) sa mi javí spojenie cez ODBC.

Databáza

Majme databázu v Excelovskej tabuľke, ktorú chceme používať ako skutočnú databázu. V Ovladacom panely najdeme ikonku pomenovanú ODBC alebo veľmi podobne. Na prvej záložke User DSN klikneme na Add po ktorom sa nam otvorí dialog so zoznamom ODBC ovládačov. Vyberieme Microsoft Excel driver a dame OK. Vypíšeme meno pod ktorým budeme k databáze pristupovať. V nasom pripade phpexcel. Další klik nasleduje na Select Workbook kde vyberieme konkrétny XLS na disku. Dalej odškrtneme položku len na čítanie a je to.

A Excel...

Teraz zadefinujem rozsah a rozloženie tabuľky s Excely. Otvoríme príslušný excelovský súbor a v menu vyberieme Vložiť-Názov-Definovať. V dialogu vypíšeme nazov našej tabuľky v našom prípade databaza. V spodnom riadku dialógu vyberieme rozsah buniek prislúchajúce našej tabulke a klikneme na Pridať.
Od teraz sme plnohodnotný a štastný majitelia ODBC databázy.

Hotovo

Takže po dlhom trápení sme sa prepracovali až k samému koncu, tzn. vyslednému skriptu. Nech oči vaše zamerajú sa na riadok nižší:


<?
//otvorenie spojenia s databazou, v tomto
//pripade tabulky v Excelovskom subore
//prihlasenom v ODBC
$spojenie = odbc_connect("phpexcel", "", "");

//ak sa podari spojit s databazov,
//vykonaj SQL prikaz SELECT
if (!$spojenie):
  echo "Nepodarilo sa spojit s databazou";
else:
  $vysledok=odbc_exec($spojenie,"SELECT * FROM databaza
    where (kraj='TA') order by obec");

//kontrola na chybu v SQL dotaze,
//ak nie, nasleduje vypisanie vysledku
if (!$vysledok):
  echo"chyba dotazu: ".$vysledok;
  echo odbc_errormsg();
else:

//nasleduje vypisanie obsahu dotazu, v tomto pripade
//nazov obce a jeho PSC
while (odbc_fetch_row($vysledok)):
  echo odbc_result($vysledok, "obec")." ".
    odbc_result($vysledok, "psc")."\n";
  echo "<BR>";
endwhile;
endif;

//uzatvorenie spojenia
odbc_close($spojenie);
endif;
?>

Niečo na záver

Je to potrebné? Myslím, že nie. Lúčim sa.
A este nieco, download: vzorovy XLS subor phpexcel.xls a PHP skript.