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 !

    • Re : Générer un fichier Excel avec PEAR
      Rift, le 16/12/08 à 14:12 :: Répondre

      s'normal t'as une faute de frappe worksheet->setInputEncodind('utf-8') devrait etre worksheet->setInputEncoding('utf-8') ...Dark

  • Générer un fichier Excel avec PEAR
    azrim [@], le 03/06/09 à 14:56 :: Répondre

    Vraiment génial cette classe ! Tu as fais du bon boulot !

    Encore Merci !

  • Générer un fichier Excel avec PEAR
    Loup, le 29/10/09 à 14:41 :: Répondre

    Merci infiniment pour le travail apporté [sourire]

  • Générer un fichier Excel avec PEAR
    samy35 [@], le 19/05/10 à 14:42 :: Répondre

    bonjour!
    J'ai essayé ton code mais moi il m'affiche ça! je ne comprend rien!
    merci pour ton aide

    Warning: require_once(Spreadsheet/Excel/Writer.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\essai excel\new1.php on line 2

    Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Writer.php' (include_path='.;C:\php5\pear') in C:\wamp\www\essai excel\new1.php on line 2

promotion

Les faiblesses des hommes font la force des femmes.

Voltaire

Tribune

  • 13:38 123
  • 21:16 lapin!!!
  • 14:04 galette
  • 09:14 22:37 :
  • 14:01 Vu le nombre de messages en tribune, j'ai l'impression de prendre 2 ans d'un coup, là !!;)
  • 14:00 merci Gui (car je suppose que c'est toi :) )
  • 10:54 Bon anniversaire à Madame (un peu en retard, pour la deuxième année consécutive) :)
  • 15:29 salut, ca farte ?
  • 23:21 window.location = "URL
  • 10:26 Hello. It is very kind for you to allow guests to post here (if it *is* possible) :)