Bonjour à tous
Dans certaines pages, je mets des boutons permettant à l'utilisateur de recevoir le contenu de la page en Word ou en Excel.
Une façon simple de faire cela, que j'utilise depuis 20 ans, consiste à générer la même page avec un header approprié, le contenu étant sous la forme d'une <table>
Je suppose qu'il existe des solutions moins barbares.
Avez vous un document à me recommander à ce sujet?
Merci de votre aide
Modérateur
Bonjour,
Toute petite contribution dans la limite de mes compétences Smiley cligne
L'export vers document Word, je n'ai jamais fait, mais pour excell, il suffit de créer un fichier csv (fichier texte avec données séparées par des points-virgules) qui pourra être ouvert par le logiciel (il faudra néanmoins faire attention à l'encodage, qui est mal pris en compte par le produit Microsoft mais bien mieux par des solutions libres telles que LibrOffice).
Merci de ta réponse
Word et Excel savent lire des fichiers .html
Ce que je fais actuellement, c'est afficher un fichier html avec

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=monfichier.$fileType");

où $fileType vaut "doc" ou "xls"
Le navigateur demande que faire de ce fichier, l'utilisateur le sauve ou l'ouvre avec l'application attachée à cette extension
Pour Excel, si on lui donne un fichier html qui ne contient qu'une table, il l'ouvre comme une page Excel, c'est plus efficace que csv qui diffère selon la version localisée d'Excel.

Pour Word, c'est plus compliqué: tant qu'on s'en tient à du html basique (sans css) il ouvre à peu près correctement le fichier, mais ça veut dire qu'on doit générer une version spécifique de la page quand on veut faire des choses un peu plus "à la mode", avec une feuille de style css.

Je suis en retraite depuis 13 ans, je ne suis plus en contact avec les changements technologiques que par ce forum (et quelques autres). Le but de ma question est de savoir si, durant ces années, il y avait des "bonnes pratiques" dans ce domaine qui se soient développées.
Modifié par PapyJP (26 Jan 2020 - 10:16)
PapyJP a écrit :
Je suis en retraite depuis 13 ans, je ne suis plus en contact avec les changements technologiques que par ce forum (et quelques autres). Le but de ma question est de savoir si, durant ces années, il y avait des "bonnes pratiques" dans ce domaine qui se soient développées.

Bonjour,
Heureux retraité... pour ma pomme ce sera en fin d'année (mais je continuerai à bosser via mon générateur web).
Pour répondre à ta question, il me semble qu'il y ait une troisième voie, bien reconnue par les navigateurs et les logiciels : le format JSon.
Je m'en sers régulièrement dans mes développements au bureau. Il présente l'avantage d'être assez facile à mettre en oeuvre et facilement rechargé par les outils Microsoft ou autres.
Il est moins verbeux que le XML mais ne présente par contre pas de fonctionnalités aussi poussées (validation notamment).
Javascript relit ce format sans problème. Idem pour PHP ou Java.
Des outils comme Power BI, par exemple, chargent les données issues de flux JSon sans retraitement.
Peut-être une solution envisageable, donc, dans ton cas moyennant un investissement "technique" plutôt léger (apprentissage / adaptation des sources).
Bonne journée.
J’utilise JSON à haute dose en AJAX, mais je n’ai jamais fait la relation avec Excel et Word. Tu veux dire que Excel et Word peuvent lire directement les fichiers JSON?
PapyJP a écrit :
J’utilise JSON à haute dose en AJAX, mais je n’ai jamais fait la relation avec Excel et Word. Tu veux dire que Excel et Word peuvent lire directement les fichiers JSON?

A ma connaissance, Word ne relira un fichier JSon que sous sa forme brute et Excel ne le verra pas non plus sous une forme tabulaire lorsque tu fais simplement un import dans ces deux outils.
Pour Word, ce logiciel étant orienté texte ce n'est pas étonnant.
Pour Excel, il faut passer par une option du menu "Données" et utiliser le module "Obtenir des données" (cf. page Microsoft).
La démarche est identique depuis Power BI.
L'import peut se faire à partir d'un fichier disque ou bien depuis une URL de type API Rest (c'est ce que j'ai mis en place au boulot) délivrant un flux JSon. Un script PHP ou autre peut être installé sur le serveur et délivrer le flux en question.
Une autre approche pourrait être de faire transiter les données en JSon, pour la simplicité de ce format, et les convertir ensuite en CSV (des scripts PHP effectuant ce type d'opération se trouvent sur le web), afin de délivrer à Excel un flux qu'il est capable de relire et recharger directement sous forme tabulaire.
J'évoquais JSon comme support car il présente l'avantage de ne pas poser de problème au niveau du séparateur. La structure de ce format étant de type clé / valeur par nature, il n'y a pas à se poser de question sur le délimiteur (tout au plus tenir compte du "=" éventuellement présent dans la valeur). Il est hiérarchique par nature (imbrication d'objets) mais cela n'est d'aucune utilité pour du CSV qui se limite, lui aussi par nature, à un seul niveau.