Générer un fichier Excel avec PEAR

22/03/06 à 21:32 :: Yannick Torrès
Catégorie : pear

Certains vont sûrement se reconnaître dans la réflexion que j'ai eue il y a quelques semaines au boulot...
Lors de diverses évolutions du logiciel utilisé au boulot, j'ai du générer un fichier "Excel" en Php.
Jusqu'à présent, lorsque ce genre de besoin se présentait, la seule et unique solution que je m'autorisais, c'était un fichier csv, formaté de telle sorte qu'Excel n'y voyait "presque" que du feu...
Et là, un de mes collègues de travail me dit simplement ceci :

"C'est génial l'export Excel !! Reste à ce que le titre soit centré, en bleu et en gras et ce sera parfait... au boulot !"

Gniiiiiiiiiii. Inutile de dire qu'il ne savait pas ce qu'était un fichier csv...

Bref, je me lance à la recherche d'une belle classe qui génère un vrai fichier Excel et je tombe, évidemment, sur une classe PEAR, j'ai nommé : Spreadsheet_Excel_Writer

Je parcours rapidement la documentation et me lance directement dans la réalisation de mon export Excel. J'ai vraiment été épaté par la simplicité de mise en place et la qualité du résultat. D'ailleurs, malgré le nom de la classe, le fichier produit s'ouvre sans problème avec OpenOffice.

J'ai donc décidé de traduire en priorité la documentation de cette classe en français, ce qui est chose faite ! (D'ailleurs, si malgré mon bon françois et mon talent inné pour l'orthographe, vous repérez ce qui ne peut être qu'une faute de frappe (!), n'hésitez pas à me la faire remarquer par email ou via un rapport de bogue).

Voici un exemple que vous retrouverez dans la documentation sur le site de PEAR :

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$format_bold =& $workbook->addFormat();
$format_bold->setBold();

$format_title =& $workbook->addFormat();
$format_title->setBold();
$format_title->setColor('yellow');
$format_title->setPattern(1);
$format_title->setFgColor('blue');

// Fusion
$format_title->setAlign('merge');

$worksheet =& $workbook->addWorksheet();
$worksheet->write(00"Bénéfices trimestriels de Dotcom.Com"$format_title);

// Plusieurs cellules vides pour rendre le tout plus jolie
$worksheet->write(01""$format_title);
$worksheet->write(02""$format_title);
$worksheet->write(10"Trimestres"$format_bold);
$worksheet->write(11"Bénéfices"$format_bold);
$worksheet->write(20"Q1");
$worksheet->write(210);
$worksheet->write(30"Q2");
$worksheet->write(310);

$workbook->send('test.xls');
$workbook->close();
?>



Cet exemple montre tout ce dont on a besoin lors de la création d'un document avec un minimum de formatage : mise en gras, changement de la couleur du texte, fusion de cellule, etc. (manque la modification de la taille des caractères qui est tout aussi simple à implémenter).

Bref, cette classe manque à être plus connue (à moins que je ne sois le seul à être passé à côté).

Commentaires

  • Problèmes
    lOurs [@], le 13/04/06 à 17:04 :: Répondre

    J'ai de gros problèmes avec cette classe...
    Il ne trouve pas la classe dans le classpath. J'ai suivi la procédure d'installation mais rien n'y fait...

    Quelqu'un peut m'aider ou a déjà eu ce problème?

    D'avance merci

    • Problèmes
      Yannick Torrès, le 13/04/06 à 22:11 :: Répondre

      Tu as bien installé Pear ?
      Tu as bien positionné la classe dans l'installation de Pear ?
      Tu as bien ajouté le chemin vers Pear dans ton PATH système ?

      Normalement, tu dois trouver tout ce qu'il te faut comme réponse sur le site de Pear.

  • Générer un fichier Excel avec PEAR
    Lasouche, le 18/04/07 à 14:20 :: Répondre

    Salut,

    J'utilise depuis quelques temps maintenant cette classe, cependant il ya une souci qui apparait dernièrement puisque la base de donnée est telle (35000 personnes) que la génération du fichier excel provoque un shutdown

    Je recherche une classe comme celle qu'utilise phpMyAdmin qui ne provoque pas ce genre de problème...

    Vous avez une idée ??

    • Re : Générer un fichier Excel avec PEAR
      Yannick Torrès, le 18/04/07 à 19:09 :: Répondre

      Un shutdown ?? Tu peux préciser ?

      Sinon, je connais mal Excel mais il n'y a pas un nombre de lignes "limites" ?

    • Re : Générer un fichier Excel avec PEAR
      nicolas [@], le 10/09/07 à 16:57 :: Répondre

      Si tu n'as pas encore trouvé chaussure à ton pied, il existe une autre classe PHPexcel.net
      très performante...
      Le seul hic que j'ai avec ces deux classes c'est qu'elles me bouffent les caractères accentués alors que tout est bien casé en utf-8. Quelqu'un a t'il une idée ?

  • Générer un fichier Excel avec PEAR
    zeojex, le 07/11/07 à 14:25 :: Répondre

    Bonjour,

    J'utilise frequement la classe suivante.
    Je me vois ici confronté à un soucis d'encodage. Il me semble qu'excel ne pratique que l'iso mais au cas où, est-il possible de générer un XLS en UTF-8. Toutes mes données étant en UTF-8.

    Merci a+

  • Générer un fichier Excel avec PEAR
    dve [@], le 19/03/08 à 16:11 :: Répondre

    Cette classe est vraiment pratique, elle fonctionne bien sous un environnment LINUX !
    Il me reste un problème lié aux accents.

    J'ai tenté la commande trouvée dans la doc worksheet->setInputEncodind('utf-8')
    Un message d'erreur indique que cette métode est undefined !

promotion

Ne mets pas tes mains sur les portes, tu risquerais de te faire pincer très fort

RATP

Tribune

  • 17:04 Bon anniversaire à Madame (un peu en retard) :)
  • 15:32 19:48 :
  • 19:02 plop
  • 15:04 trop classe
  • 21:56 félicitations Lapin ! j'espère que tu as fété ça au champagne ;)
  • 20:51 URL
  • 20:50 salut lapin je suis tout content ce soir : URL premier lien première page !!
  • 17:56 jg
  • 20:18 Yes, woohoo !! des centaines d'heures de travail derrière ce chiffre :p et il en reste encore autant... 800 nouveaux fichiers non traduits ! mais on va y arriver :)
  • 19:48 Manuel PHP français la traduction de près de 100% nouveau ... Woohoo! :)