Il ne faut pas te demander à quoi sert tel ou tel fichier, ce sont des fichiers servant à faire fonctionner leur librairie.
L'essentiel n'est donc pas de savoir comment ça fonctionne mais plutôt comment l'utiliser (bien qu'il peut être très intéressant de savoir comment ça fonctionne).
Maintenant on peut aussi faire des suppositions :
class.writeexcel_biffwriter.inc.php -> biff signifie Binary File Format. On peut supposer que ce fichier sert donc à écrire les fichiers Excel en mode binaire. A noter qu'il existe aussi un package du nom de BiffWriter (actuellement en version 2.1) servant à générer des fichiers Excel. Par ailleurs, ce package est, contrairement à writeexcel, mis à jour régulièrement.
class.writeexcel_format.inc.php -> aucune idée, il faudrait aller voir dedans pour savoir ce que ça gère, "format", c'est un peu vague.
class.writeexcel_formula.inc.php -> la aussi, aucune idée... La gestion des formules (calcul ou même formules excel) ?
class.writeexcel_olewriter.inc.php -> classe pour sauver des fichiers BIFF dans une source d'information via l'interface OLE DB de Microsoft.
class.writeexcel_workbook.inc.php -> un fichier excel est composé de feuilles. On peut supposer que cette classe sert à gérer l'ensemble des feuilles.
class.writeexcel_worksheet.inc.php -> on peut supposer que cette classe sert à gérer une feuille dans le workbook, donc dans le document excel.
Maintenant prenons le code de example-simple.php
<?php
set_time_limit(10);
require_once "class.writeexcel_workbook.inc.php";
require_once "class.writeexcel_worksheet.inc.php";
$fname = tempnam("/tmp", "simple.xls");
$workbook = &new writeexcel_workbook($fname);
$worksheet = &$workbook->addworksheet();
# The general syntax is write($row, $column, $token). Note that row and
# column are zero indexed
#
# Write some text
$worksheet->write(0, 0, "Hi Excel!");
# Write some numbers
$worksheet->write(2, 0, 3); # Writes 3
$worksheet->write(3, 0, 3.00000); # Writes 3
$worksheet->write(4, 0, 3.00001); # Writes 3.00001
$worksheet->write(5, 0, 3.14159); # TeX revision no.?
# Write two formulas
$worksheet->write(7, 0, '=A3 + A6');
$worksheet->write(8, 0, '=IF(A5>3,"Yes", "No")');
# Write a hyperlink
$worksheet->write(10, 0, 'http://www.php.net/');
$workbook->close();
header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
header("Content-Disposition: inline; filename=\"example-simple.xls\"");
$fh=fopen($fname, "rb");
fpassthru($fh);
unlink($fname);
?>
set_time_limite : Fixe le temps maximum d'exécution d'un script (source : Nexen.net)
Le script commence par la création d'un fichier temporaire simple.xls dans le répertoire temp, vu que le document excel ne sera pas sauvé mais généré à chaque fois qu'on appelle le script (sauf si on précise à la fin du script de le sauver).
Le script continue en créant un workbook, qui contiendra un ensemble de worksheet, à savoir de feuilles excel.
Puis le script crée sa première feuille excel (à laquelle il ne donne pas de nom vu que c'est la seule feuille du document).
Dans la case 0,0 il écrit "Hi Excel !"
Dans la case 2,0 il écrit 3
Dans la case 3,0 il écrit 3.000000
Dans la case 4,0 il écrit 3.000001
Dans la case 5,0 il écrit 3.14159
Dans la case 7,0 il écrit la formule Excel '=A3 + A6' qui correspond à la somme de la case A3 et de la case A6
Dans la case 8,0 il écrit la formule Excel '=IF(A5>3,"Yes", "No")' qui écrira Yes si la case A5 est supérieure à 3 et No dans le cas contraire
Dans la case 10,0 il écrit un lien http
il ferme son workbook
Il écrit le header pour que le script soit considéré comme un fichier Excel
Et il envoie le fichier Excel au navigateur pour que celui-ci ait l'impression d'ouvrir un vrai document excel.
Bref, il n'y a pas de réelle difficulté dans write_excel, il suffit d'ouvrir les examples avec Excel et en parallèle avec le bloc note pour voir directement ce que fait chaque commande et réutiliser ce dont on a besoin pour sa propre utilisation.
Problème de write_excel : il ne gère pas les accents et ne peut pas ouvrir le document Excel pour le lire.