Bonsoir et désolé pour ce retard. J’étais trop occupée les dernières semaines...
Je vous explique la méthode de la génération d’un fichier Excel en PHP à partir de la classe COM. Très efficace pour jouer le tour à un prof au cours d’une validation =) .Certes inefficace pour un vrai projet sur un serveur UNIX. Je vous explique ce problème en détails dans la dernière partie.
La classe COM vous permet d'instancier un objet COM compatible OLE, d'appeler ses méthodes et d'accéder à ses propriétés.
La syntaxe sous forme d’un exemple -trop simple- :
<?php
// On définie une constante FILENAME comprenant le nom du fichier à générer et son emplacement.
define("FILENAME","C:/fichier.xls");
if(file_exists(FILENAME)) // On vérifie que le fichier existe.
{
unlink(FILENAME); // Suppression du fichier précédemment créé s'il existe.
}
$excel=new COM("Excel.application"); //Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//1 seule feuille de calcul dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active
$sheet->Name="Nom de votre feuille";//Attribution d'un nom à la feuille
// 1ere ligne du fichier excel
$cell=$sheet->Range('A1'); //placement de la cellule
$cell->value='wafa bouaynaya'; //valeur de la cellule
$cell->Font->bold = true; //en gras ou non
$cell->EntireColumn->ColumnWidth=5;
$cell->Font->ColorIndex=2; //font color blanc
$cell->Font->Size=13; //font size 13
//fermeture du fichier excel
$book->saveas(FILENAME);
unset($sheet);
unset($book);
$excel->Workbooks->Close();
$excel->Quit();
unset($excel);
?>
Et voilà, notre exemple est fini. Pour avoir la liste complète des références de couleur : http://www.mvps.org/dmcritchie/excel/colors.htm
Pour plus de détail: http://fr2.php.net/manual/fr/class.com.php
Pour plus de détail: http://fr2.php.net/manual/fr/class.com.php
Cependant, le modèle objet COM d'Office (et donc d'Excel) n'a pas été conçu pour un usage en mode serveur sans interface. C'est un modèle purement client pour 2 raisons:
1 - si l'application Office se met à "prompter" l'utilisateur, personne ne peut répondre dans un logique serveur
2 - le modèle objet n'est pas "thread-safe", c'est à dire (qu'en gros) qu'il ne supporte mais un environnement fortement concurrent/multi-threadé comme un environnement serveur.
Du coup, le seul cas intéressant est plutôt avec un client lourd sur Windows. C’est pour ça que j’ai dis que ce tour est efficace sur nos ordinateurs portables en local et non pour un projet hébergé sur un serveur UNIX.
Pour générer des fichiers Office côté serveur, le mieux est de le faire en générant soit-même les fichiers au format Open XML à l'aide éventuellement du SDK associé : http://msdn.microsoft.com/fr-fr/office [...] .2.0.sdk.aspx . Sinon PHPExcel apparait comme la meilleure des solutions..
1 - si l'application Office se met à "prompter" l'utilisateur, personne ne peut répondre dans un logique serveur
2 - le modèle objet n'est pas "thread-safe", c'est à dire (qu'en gros) qu'il ne supporte mais un environnement fortement concurrent/multi-threadé comme un environnement serveur.
Du coup, le seul cas intéressant est plutôt avec un client lourd sur Windows. C’est pour ça que j’ai dis que ce tour est efficace sur nos ordinateurs portables en local et non pour un projet hébergé sur un serveur UNIX.
Pour générer des fichiers Office côté serveur, le mieux est de le faire en générant soit-même les fichiers au format Open XML à l'aide éventuellement du SDK associé : http://msdn.microsoft.com/fr-fr/office [...] .2.0.sdk.aspx . Sinon PHPExcel apparait comme la meilleure des solutions..

Aucun commentaire:
Enregistrer un commentaire