Ako čítať excel .xls súbory

publikované: od: Tibor Piňo

V dnešnom článku si ukážeme, akým spôsobom môžeme pomocou CakePHP prečítať obsah excelovského .xls súboru.

Určite sa všetci zhodneme na tom, že kancelársky balík Microsoft Office je najúspešnejšou kancelárskou aplikáciou, a preto určite v mnohých prípadoch narazíme na situáciu, kedy budeme potrebovať prečítať obsah excel súboru s príponou .xls V tomto článku si ukážeme podrobný návod, ako takúto situáciu vyriešiť.

PHP excel reader

Na čítanie .xls súboru budeme využívať php knižnicu php excel reader Na oficiálnych stránkach moc informácií nenájdete, avšak všetky potrebné informácie aj s ukážkovými príkladmi sa dajú nájsť v stiahnuteľnom súbore. My si však túto knižnicu upravíme pre potreby CakePHP a vytvoríme z nej komponentu.

PHP excel reader komponenta

Samotnú komponentu umiestníme do adresára app/controller­s/components do súboru spreadsheet.php. Nesmieme však zabudnúť aj na priložený súbor oleread.inc (je súčasťou stiahnuteľného balíka na oficiálnych stránkach excel readeru), ktorý daná knižnica potrebuje k svojej činnosti a musíme ho taktiež umiestniť do adresára components. Nekompletný kód našej komponenty v súbore app/controller­s/components/spre­adsheet.php by vypadal následovne

require_once 'oleread.inc';

class SpreadsheetComponent
{
     //obsah komponenty
}

Následne musíme danú komponentu importovať v controlleri, ktorý ju bude používať. Náš controller pomenujeme DocumentsContro­ller a umiestníme ho do súboru app/controller­s/documents_con­troller.php. Kód controlleru by vypadal následovne

class DocumentsController extends AppController {

    var $name = 'Documents';
    var $helpers = array('Html', 'Form');
    var $components = array('spreadsheet');
}

Po vytvorení komponenty a jej inicializovaní máme všetko pripravené a môžeme sa pustiť do čítania súboru. Kód pre čítanie .xls súboru by vypadal následovne

class DocumentsController extends AppController {

    var $name = 'Documents';
    var $helpers = array('Html', 'Form');
    var $components = array('spreadsheet');
    var $xsl = 'spreadsheet.xls';
    var $xsl_path = 'files';

    function read() {

        //nastavime vystupne kodovanie citanych dat
        $this->spreadsheet->setUTFEncoder('iconv');
        $this->spreadsheet->setOutputEncoding('utf-8');

        //urcime subor, ktory budeme citat, v nasom pripade umiestneny v adresari app/webroot/files
        $this->spreadsheet->read($this->xsl_path.DS.$this->xsl);

        //samotne citanie .xls suboru
        for ($i = 1; $i <=$this->spreadsheet->sheets[0]['numRows']; $i++) {

             //bunka na riadku $i v stlpci 1
             echo $this->spreadsheet->sheets[0]['cells'][$i][1];

             //bunka na riadku $i v stlpci 2
             echo $this->spreadsheet->sheets[0]['cells'][$i][2];

        }
    }
}

Ako môžeme vidieť, práca s knižnicou je veľmi jednoduchá a nepotrebuje žiadne bližšie vysvetlenie. Akurát treba spomenúť, že je potrebné nastaviť výstupné kódovanie čítaných dát v závislosti na tom, aké kódovanie používa naša aplikácia. V našom prípade sme nastavili kódovanie utf-8.

Týmto je náš článok u konca. Knižnica je veľmi jednoduchá na použitie a určite ju v mnohých prípadoch úspešne využijeme. Avšak musím spomenúť, že .xls formát od microsoftu nie je otvoreným formátom (aspoň v dobe poslednej aktualizácie tejto knižnice nebol) a preto sa môžeme stretnúť aj s problémami so správnym čítaním údajov z .xls súborov. Avšak i napriek menším nedostatkom môžeme tuto knižnicu označiť za veľmi vydarenú.

Rád uvítam vaše nápady a pripomienky ohľadne témy .xls v php.

Na stiahnutie: spreadsheet-cakephp-component

VN:F [1.8.3_1051]
Rating: 0.0/5 (0 votes cast)