Table des Matières

Objectif

L'objectif de ces 4 fonctions est de générer un fichier Excel à la volée depuis une page PHP. Le contenu de la feuille Excel provient de deux tableaux PHP.

Code

<?php
function xlsBOF() {
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
    return;
}
function xlsEOF() {
    echo pack("ss", 0x0A, 0x00);
    return;
}
function xlsWrite($Row, $Col, $Value ) {
    $L = strlen($Value);
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    echo $Value;
    return;
}
function xlsGenerateFile($headers,$content,$filename)
{
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");;
    header("Content-Disposition: attachment;filename=$filename ");
    header("Content-Transfer-Encoding: binary ");
    xlsBOF();

    // Make column labels from array $headers
    for($i=0;$i<count($headers);$i++)
    {
        xlsWriteLabel(0,$i,$headers[$i]);
    }
    $xlsRow = 1;

    // Put data records from array $content
    for($i=0;$i<count($content);$i++)
    {
        $xlsCol = 0;
        foreach($content[$i] as $key=>$value)
        {
            xlsWrite($xlsRow,$xlsCol,$value);
            $xlsCol++;
        }
        $xlsRow++;
    }
    xlsEOF();
    exit();

?>

Explications

La fonction xlsBOF() initialise le fichier.

La fonction xlsEOF() termine le fichier

La fonction xlsWrite() va écrire une ligne dans le fichier Excel.

La fonction xlsGenerateFile() va quand à elle utiliser les fonctions précédentes pour générer le fichier Excel.

Elle modifie les headers en premier lieu (ce qui signifie que cette fonction doit être utilisée dans une page PHP n'ayant pas encore initialisé d'headers!) afin que le fichier généré soit traité comme un fichier Excel par le navigateur.

Elle va ensuite écrire une première ligne avec l'ensemble des entêtes de colonnes qui seront contenues dans le tableau $headers.

Puis elle va parcourir le tableau de contenu $content (tableau à 2 dimensions) pour remplir le fichier excel. Typiquement ce tableau est un résultat d'une requête mySQL.

Exemple

Petit exemple pour montrer le fonctionnement.

<?php
$headers = array("Num.", "Utilisateur", "Chemin");
$content[0]['num'] = "1";
$content[0]['user'] = "Foo";
$content[0]['path'] = "/home/foo";
$content[1]['num'] = "2";
$content[1]['user'] = "Bar";
$content[1]['path'] = "/home/Bar";

xlsGenerateFile($headers,$content,'users.xls')";

Dans cet exemple, le tableau $content est le résultat d'une requête SQL.

Le résultat sera donc le suivant:

 

Num. Utilisateur Chemin
1 Foo /home/foo
2 Bar /home/bar

Sources

PHPsimple: http://www.phpsimple.net/tutorials/mysql_to_excel/

 

Liste des Commentaires
le 17 Sep 2011 à 08:20:25
tramadol %-))) new jersey car insurance >:]]] car insurance nflxab viagra 463430
le 06 Apr 2012 à 09:48:30
Your time as the dre beats headphones, not every develop the money to buy high-class Christmas items for our family and friends detox beats headphones. Although what on earth is a number of is always that, beats mixr headphones most of us possess "time" that people could promote considering the types all of us love. studio beats Christmas Time is not only in relation to allowing content things to your family and friends. Actually, solo beats it is not individuals high priced items this create Christmas worth celebrating for dr dre headphones uk. Quite, some time that people commit together with our family and friends will be the major 2011 Christmas items dre studio headphones all of us could previously give for you to these people. These are generally simply most of the dre solo headphones best Christmas items this your dependents ought to get for you to receive.
Laissez votre commentaire:
Un ou plusieurs champs ci-dessous ne sont pas remplis correctement.
Les champs obligatoires sont indiqués par une étoile rouge









En aucun cas, votre adresse email ne sera diffusée.
Elle ne sera utilisé que pour l'avatar (service de gravatar.com)
Les champs marqués d'une sont obligatoires.





© 2003 - 2012 kns7.org | Site réalisé et hébergé par KNet Solutions | Plan du site | Contact

En Deuil contre HADOPI:
kns7.org est en deuil contre les obscurantistes industriels du divertissement et leurs lois liberticides