Bonjour à toutes et à tous.
Je voudrais pouvoir exporter des donnés php dans un template au format ODS (ex : template.ods).
Plus précisement, je voudrais affecté des valeurs de type entiers à plusieurs cellues de ce template déjà existant.
Pouvez vous m'aider.
Cordialement

8 réponses


Salut,

Qu'est-ce que tu appelles "template PHP" ? Une vue HTML ? Un jeu de data ?
Regarde comment se compose un fichier ODS. Par exemple, pour un CSV, c'est tout simplement un fichier texte formaté d'une façon particulière : chaque cellule est séparée par un ';' et chaque ligne par un \n. Je pense que le fonctionnement est similaire dans ton cas.

Mizzou
Auteur

Pour le csv, oui j'ai bien compris. Le tuto de grafikart est bien fait, mais la j'ai un tableur (nommé par exemple : template.ods) avec formatage des cellules ainsi que du design. Je voudrais alors être en mesure de pouvoir affecter des données aux cellules de ce template. Lorsque l'utilisateur cliquera sur ce lien, il aura toute les données statistique de ce jour.

Je ne suis pas sûr que ça soit possible à faire via PHP, tu as regardé sur packagist s'il existe un package PHP qui pourrait éventuellement faire cela ?

Mizzou
Auteur

Il y a effectivement une classe phpExcel, mais bon je renvontre des soucis dans la lecture d'un template. La classe efface totalement le style.

Tu peux nous envoyer le lien vers la doc du package que tu utilises stp.
Et nous copier/coller ton code tant qu'à faire.

Mizzou
Auteur

Dans mon composer.json

        "phpoffice/phpexcel" : "1.8.1"

Ensuite pour le moment, j'en suis aux tests suivants :

$fileName = 'SYNTHESE.ods';
$phpExcel = PHPExcel_IOFactory::load($fileName);
//on crée un nouveau fichier
$writer = PHPExcel_IOFactory::createWriter($phpExcel, "OpenDocument");

// Mes test de modifications qui fonctionnent tres bien mais je perds tous les styles des cellules
$sheet = $phpExcel->getSheet(0);
$sheet2 = $phpExcel->getSheet(2);
$sheet ->removeRow(2,2);
$sheet->setTitle('coco');
$sheet2->setTitle('coco3');

// Redirect output to a client’s web browser (OpenDocument)
header('Content-Type: application/vnd.oasis.opendocument.spreadsheet');
header('Content-Disposition: attachment;filename="'.$fileName.'"');
header('Cache-Control: max-age=0');

// Je l'envoie au navigateur
$writer->save('php://output');
// Et j'en fait une sauvegarde
$writer->save('a.ods');

Bonjour.
Tu te trompes car tu dois utiliser ceci : Open/Libre Office (.ods).
Actuellement tu utilises la méthode pour les fichiers XLSX et non ODS.

Mizzou
Auteur

Effectivement je viens de m'apercevoir de cette erreur. Cette dernière étant corrigée, le problème persite tout de même, le style d'origine n'est pas conservé. Je continue mes recherches. Vraissemblablement, beaucoup d'utilisateurs rencontrent le même problème.
En attendant. Merci