MIME::Lite Fichier Excel corrompu lors de l'envoi par mail [Résolu] - Perl - Programmation
Marsh Posté le 30-10-2011 à 20:13:08
A tout hasard, fais ton open en mode binaire.
open (FILE, "$fichier_a_transformer" ) || die ("impossible de d'ouvrir $fichier_a_transformer $!" );
binmode(FILE); # ça en plus
A+,
Marsh Posté le 30-10-2011 à 20:19:33
Bonsoir gilou,
Je viens d'essayer, hélas sans succès.
Le fichier reste "vide" par mail alors qu'il est bien généré sur le PC.
Marsh Posté le 30-10-2011 à 21:02:15
Sans binmode, mais avec un $workbook->close();
avant le close (FILE);
ça change qque chose?
Parce que ça a de bonne chance d'être ce $workbook->close() qui écrit tout dans le fichier.
A+,
Marsh Posté le 30-10-2011 à 21:06:12
En fait, c'est même documenté dans la doc du module: http://search.cpan.org/dist/Spread [...] pm#close()
Citation : An explicit close() is required if the file must be closed prior to performing some external action on it such as copying it, reading its size or attaching it to an email. |
Dans le code indépendant ou ça marche, c'est parce que à la sortie de perl, on appelle le destructeur de l'objet workbook, et que ce destructeur appelle close. Le fichier est donc généré quand on sort du script.
A+,
Marsh Posté le 30-10-2011 à 21:30:32
Erf j'ai parcouru cette doc mais ce point m'a échappé
C'est corrigé et cela fonctionne !
Merci gilou
Marsh Posté le 30-10-2011 à 21:48:53
Dernière p'tite question,
J'ai cherché mais sans succès sur la question de l'autofit.
De ce que j'ai pu lire ce n'est pas possible de le faire avec ce module.
Quand j'ouvre le fichier Excel j'ai une colonne naturellement plus grande que la largeur par défaut, je suis obligé de tout sélectionner puis double cliquer sur la largeur d'une colonne pour qu'Excel size automatiquement les largeurs des colonnes à la longeur de mes champs.
Gilou,
Je voudrai avoir ton avis d'expert sur ça, est-ce vraiment pas disponible ou penses-tu qu'il existe un moyen?
Le but étant de minimiser au max les actions utilisateurs, afin qu'il est le minimum de chose à faire quand il ouvre le fichier Excel.
Merci pour tes lumières.
Marsh Posté le 30-10-2011 à 22:44:04
C'est dans la FAQ du module: http://groups.google.com/group/spr [...] b4cde64b93
A+,
Marsh Posté le 30-10-2011 à 17:38:02
Bonjour,
J'ai un problème où je ne comprends pas du tout la logique de l'erreur.
Je pars d'un fichier .csv déjà crée, où j'ai juste besoin de le convertir en fichier Excel puis de l'envoyer par email.
Hors, le fichier Excel arrive avec une taille de 300Byte au lieu de faire 6Ko
Impossible de l'ouvrir via l'email, il est corrompu.
Alors qu'une fois le script terminé, même si le fichier Excel par mail arrive vide, sur mon PC le fichier Excel est bien là, converti comme il se doit et fonctionne.
Si j'envoi le fichier .csv ça passe sans problème et l'Excel non.
De même, si j'envoi ce même fichier Excel dans un second script, cela fonctionne (car le second script n'est pas à l'origine de la création de ce fichier Excel, il ne fait que l'envoyer)
Moi je ne veux pas passer par 2 scripts pour faire ce que je veux, je veux tout faire dans un seul.
Donc que j'envoi ce fichier Excel fraîchement converti sur un serveur ou par mail, il est vide.
Pourquoi?
J'ai même tenté de faire un sleep de 60s juste avant de faire le mail, histoire de mettre une tempo me disant qu'il n'avait sans doute pas eu le temps de créer le fichier Excel, et bien non même résultat.
Je ne comprends pas du tout.
Voici le script ci-dessous
Merci de votre aide
Message édité par Sethenssen le 30-10-2011 à 21:30:56