From HTML table to EXCEL file in CakePHP 3.x

In questo breve tutorial viene illustrato come ottenere un file Excel da una tabella HTML. L’esempio si riferisce alla modifica di un file Template di una applicazione CakePHP 3.x, ma può essere facilmente adattato a file PHP.

Modifica del Template

Parte del codice da inserire in cima al file template. E’ importante che lo script sia inserito prima di iniziare a stampare a video il codice HTML.

<?php
// Disattiva il layout
$this->layout = null;

// Imposta l'header del file
header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-type:   application/x-msexcel; charset=utf-8");
header("Content-Disposition: attachment; filename=export-data-" . date('Y-m-d') . ".xls");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);

Definizione della tabella HTML

A seguire è necessario definire in HTML la tabella che si vuole riportare nel file excel.

<table border="1">
    <thead>
        <tr>
            <th>colonna 1</th>
            <th>colonna 2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>elemento 1</td>
            <td>elemento 2</td>
        </tr>
    </tbody>
</table>

Conclusioni

Con pochissime righe di codice è possibile trasformare un file php in un file excel da salvare sul client che chiama la pagina. Con riferimento al framework CakePHP, è possibile modificare il controller di riferimento, in modo che se viene passato il parametro export venga invocato il tempate costruito ad-hoc.

// Codice da inserire nella funzione INDEX

if (isset($this->request->query['export']))
    $this->render('export');

Per chiarimenti e suggerimenti lascia un commento qui sotto. Al prossimo articolo.

Lascia un commento