Codeigniter – izvoz podatkov v excel datoteko

Nekaj časa nazaj sem na enem izmed projektov moral dodati funkcionalnost, kjer si lahko registriran uporabnik oziroma administrator izvozi seznam članov in želja je bila, da se podatki shranijo v excel datoteko.  Sama knjižnica, katero sem izbral je zelo prilagodljiva, enostavna in s številnimi bonbončki – izbral sem namreč PHPExcel library, in jo brez težav implementiral v samo aplikacijo, ki je mimogrede razvita v Codeigniter php ogrodju.

1. PHPExcel knjižnica

Najprej moramo v codeigniter pod application/libraries ustvariti novo knjižnico, zato kar ustvarimo novo datoteko in jo poimenujemo npr. Excel.php. Nato moramo zgolj spisati funkcije, ki bodo uporabile metode PHPExcel knjižnice.

Sam sem uporabil tri funkcije in konstruktor v katerem sem ustvaril objekt.

Tako, sedaj imamo knjižnico končano in čas je da se lotimo modela in pisanja funkcij, ki nam bodo koristile za pridobivanje podatkov katere bomo nato izvozili.

2. Model

Za začetek gremo v application/models in ustvarimo novo datoteko. Sam sem svojo poimenoval kar excel_model.php.

V tej datoteki sedaj zgolj spišemo funkcije, ki nam bodo iz baze pridobile podatke.

Primer modela s funkcijo:

Ko smo funkcije spisali pa je potrebno ta naš nov model nastaviti, da se bo sam naložil (angl. autoloading). Zato gremo v application/config/autoload.php in poiščemo 112. vrstico ter dodamo naš model:

Seveda je ena možnost tudi, da model v samem kontrolerju ročno pokličemo.

3. Controller

V kontrolerju moramo narediti dve stvari in sicer:

– poklicati našo knjižnico

– ustvariti metodo, ki nam bo dejansko izvozila podatke

Torej v konstrukturju najprej pokličemo našo knjižnico na naslednji način:

nato pa ustvarimo metodo, ki jo bomo poklicali na frontendu za izvoz podatkov (spodnja metoda je simbolična):

3. View

Zadnja stvar, ki je še ostala je zgolj klic metode izvoziMaile() v samem view-ju oziroma pogledu.

Metodo pokličemo v HTML kodi kar v <a> znački v atributu href.

kjer je admin ime kontrolerja, izvoziMaile pa ime naše funkcije.