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_ <ni...@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
----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Répondre à