Historiquement ce qui marchait pour un import facile dans Excel c’est en effet du CSV tabulé en iso-truc exclusivement.
C’est pourquoi la fonction d’export CSV a ce type d’option pour assurer a minima un peu de compat avec le truc proprio.
Pour les vrais exports csv c’est plutôt fonctionnel, même si on peut sans doute se reposer sur une librairie plus moderne — mais je pense que ça vaudra surtout pour les exports dans les formats natifs excel.
Sur le fond on a un vrai problème sur les exports qui actuellement cassent tout dès que les données sont un peu trop volumineuses, ce qui est très gênant (par exemple avec formidable, notamment).
Si on doit refaire des nouvelles fonctions et une nouvelle API, il serait vraiment bien de prendre ce problème en compte.
Une des pistes est que tant qu’on push le fichier généré sur la sortie, on est pas coupé par le timeout. Mais ça implique d’exporter au fur et à mesure qu’on construit les lignes de l’export, car si on commence par construire un gros tableau de données pour pouvoir l’exporter ensuite on meurt avant d’avoir commencer à générer le fichier.
Je dis ça pour partager car je sais pas si on sait faire ça dans le cas générique…
--
Cédric
Le 10 oct. 2019 à 18:31 +0200, nicod_ <nicod@lerebooteux.fr>, a écrit :
Le 10/10/2019 à 18:18, toutati a écrit :
> en effet quand je regarde le code ça cafouille pas mal. Déjà pour
> retrouver ce qui concerne uniquement xls, on pourrait éclaircir et
> séparer les fonctions pour excel de celles de csv, rien que la fonction
> qui est appelé depuis formidable et qui est dans le core sur
> ecrire/inc/exporter_csv.php est difficilement compréhensible. Il y a (il
> me semble) de nouvelles fonctions depuis PHP5 orienté objet pour les CSV
> plutot claires.
Formidable nécessite spip_bonux, c'est donc ses fonctions qui sont
utilisées, pas celles du core :
/spip-bonux-3/inc/exporter_csv.php
> Donc ce serait surtout bien d'avoir un traitement de fichiers CSV et
> Excel autonome dans un plugin avec une librairie qui va bien, et sortir
> ces fonctions du core, nope ?
Oui, il faudrait faire un plugin qui propose exporter_xlsx() et
importer_xlsx(), avec la même signature, basée sur une lib comme Spout
ou PHPexcel.
Et modifier exporter_formulaires_reponses() dans formidable pour qu'elle
appelle l'une ou l'autre.
J'ai pas du tout le temps en ce moment, mais si tu te le sens, j'ai du
code sous la main 
Ou bien RealEt peut fournir le sien (Spout a l'air plus rapide comme lib
que PHPexcel).
--
nicod_
----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone