phpexcel

Mattepuffo's logo
Usare PHPExcel con CodeIgniter

Usare PHPExcel con CodeIgniter

PHPExcel è un'ottima libreria per creare file excel con PHP.

Ne ho già parlato in passato, ed ora useremo questa libreria dentro al framework CodeIgniter.

Prima di tutto scaricate la libreria da qua.

Dentro al file zip identificate la cartella Classes; il suo contenuto mettetelo dentro application/third_party.

A questo punto create un file nominato excel.php dentro a application/libraries:

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

require_once APPPATH . '/third_party/PHPExcel.php';

class Excel extends PHPExcel {

    public function __construct() {
        parent::__construct();
    }

}

Questo sarà il file che noi richiameremo nel controller, e altro non fa che richiamare la classe PHPExcel.

A questo punto procediamo nella creazione del model che eseguirà la query su db, e che richiameremo nel controller; ad esempio:

<?php

class Excel_model extends CI_Model {

    public function getEntrate() {
        $this->db->select('entrata_valore, causale_nome, conto_nome, entrata_data, entrata_note');
        $this->db->from('entrate');
        $this->db->join('causali', 'entrate.causale_id = causali.causale_id');
        $this->db->join('conti', 'entrate.conto_id = conti.conto_id');
        $this->db->order_by('entrata_data', 'desc');
        $this->db->limit(50);
        $query = $this->db->get();
        return $query->result();
    }

}

Se non volete prendere tutte le colonne della tabella, dovete specificare quali volete, altrimenti ve le ritroverete tutte nel file excel.

Mattepuffo's logo
Creare file excel con PHP

Creare file excel con PHP

PHPExcel è un'ottima libreria per creare file excel con PHP.

Include molte funzionalità, è semplice da usare ed è in grado di creare file xls, xlsx, pdf, ecc.

Qui vi mostro come creare un file excel interrogando una tabella MySQL usando PDO, e non è stato affatto semplice arrivarci e per questo ringrazio l'utente bstefano79 del forum HTML.it.

Prima di tutto la connessione con PDO.

Non ve la spiego passo per passo in quanto spiegata qua.

Sappiate solo che ho una cartella moduli con dentro un file config.php che contiene la classe Config dove dentro ho la conessione al db con varie funzioni.

Vi riporto la parte che ci interessa:

<?php

class Config {

    private $pdo;

    public function __construct() {
        try {
            $this->pdo = new PDO('mysql:host=localhost;dbname=db', "user", "pass", array(
                        PDO::ATTR_PERSISTENT => TRUE
                    ));
        } catch (PDOException $e) {
            print "Error!: " . $e->getMessage() . "<br/>";
            die();
        }
    }

    public function selectEx() {
        $result = array();
        try {
            $stmt = $this->pdo->prepare("CALL getBookEx()");
            $stmt->execute();
            $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
            return $result;
        } catch (PDOException $e) {
            return "Error!: " . $e->getMessage() . "<br/>";
            die();
        }
    }
    ...................

}

A noi interessa la funzione selectEx().