Automatisation convertion xls -> csv pour update BDD (en p [PHP/MySQL] - PHP - Programmation
Marsh Posté le 19-07-2007 à 11:36:30
sous excel, il n'y a qu'à convertir le fichier : Fichier > enregistrer sous et dans "type de fichier", choisir le CSV. La personne n'aura plus qu'à uploader son fichier CSV, non ?
Marsh Posté le 19-07-2007 à 11:39:25
et si c'est trop compliqué de faire ça, tu lui fais un macro qui produit le résultat identique en appuyant sur un seul bouton.
Marsh Posté le 19-07-2007 à 11:46:10
Bien sur Fichier > enregistrer sous c'est ce que je fais moi.
Mais la personne pour qui je developpe l'outil doit effectuer cette tache tout les matin et veut absolument pouvoir le faire en 1 ou 2 clic.
Au sujet de la macro peux-tu expliciter ?
Marsh Posté le 19-07-2007 à 11:59:13
Il faut que l'objet COM soit installé sur le serveur ou tourne php.
http://stephaneey.developpez.com/t [...] /phpexcel/
Marsh Posté le 19-07-2007 à 12:05:01
ReplyMarsh Posté le 19-07-2007 à 12:12:46
En fait je ne sais pas ce qu'est une macro (sous excel ?).
Mais je vais tenter de faire ça en passant par le COM, le site de anaparjari à l'air trés bien fait ça va beaucoup m'aider.
Marsh Posté le 19-07-2007 à 15:37:30
je te déconseille COM car c'est assez lourd en ressources serveur. En +, y'a un bug : quand tu veux fermer excel par php, celui reste en mémoire. Donc, au bout de qq utilisations tu vas saturer la RAM (à moins que ce bug n'ait été corrigé depuis). Perso, je pense qu'il ne faut pas utiliser COM sur un serveur en production.
Le coup de la macro sous Excel me paraît mieux. Tu peux très bien faire la macro de transfo de xls->csv sur l'événement de fermeture du fichier excel. Comme ça, c'est transparent pour l'utilisateur (pas besoin de cliquer sur un bouton)
Marsh Posté le 19-07-2007 à 16:26:49
D'accord je vais donc abandonner le COM, surtout que si ce que tu me dis est toujours exacte ce n'est pas du tout viable comme solution vu que le script sera executé tout les matin, surtout que le service informatique ne m'aide vraiment pas au niveau des ressources (au contraire).
Il ne me reste donc plus qu'à me documenter sur les macro excel
Marsh Posté le 19-07-2007 à 16:42:31
c'est vraiment de la merde ces formats de fichiers et oué je confirme COM c'est toujours buggé, des threads excel subsitent meme après fermeture et pas que par php mais tout ce qui peut exploiter com. j'vois pas trop de solution coté serveur.
Marsh Posté le 19-07-2007 à 16:49:53
D'accord par contre il y q des petites choses que je ne comprend pas sur les macro excel.
Une macro est-elle ratachée à un fichier excel en particulier ou bien peut elle être executée sur tout les classeurs de tout les fichier ?
Marsh Posté le 19-07-2007 à 17:20:45
elle est contenue dans le fichier xls.
Dans excel, fait afficher la barre "Visual Basic" puis clique sur l'icône qui a comme info-bulle "Visual Basic Editor". Là, dans le menu de gauche, tu devrais voir tes feuilles et thisWorkbook.
Tu doubles-clic sur thisworkbook : là, t'a une page blanche qui s'affiche avec juste au-dessus 2 liste déroulantes.
Dans la première, tu sélectionnes Workbook. Ca te crée une en-tête de fonction open() que tu peux virer. Dans la 2ième liste, tu sélectionnes "BeforeClose". Ca te crée une en-tête de fonction : là dedans, tu mets ton code pour enregistrer en csv avant la fermeture du classeur.
Marsh Posté le 20-07-2007 à 08:22:10
Oui j'ai vu tout ça hier en cherchant un peut sur google.
Le probleme c'est que le fichier .xls que j'obtient est recréé chaque jour et non pas mis à jour.
Donc vu que la maccro est dans le fichier .xls cette solution n'est pas viable vu que s'en sera un nouveau chaque jour.
Marsh Posté le 20-07-2007 à 09:10:08
tu le recrées tous les jours comment?
T'as pas moyen d'y intégrer la macro quand tu le crées?
Marsh Posté le 20-07-2007 à 09:50:11
Non tout les jours c'est créé par une requete surf et ça arrive dans une boite PAM (je connais aucune de ces deux technologie c'est juste ce qu'on m'a expliqué).
Ce n'est pas moi qui le créé, c'est déjà fait par le systeme actuel.
Marsh Posté le 20-07-2007 à 13:39:01
Re
J'ai aussi besoin de traiter de l'excel. Je suis tombé la dessus :
http://sourceforge.net/projects/phpexcelreader
testé, ça fonction bien, ça ouvre le flichier excel et ça extrait le contenu, ça ne demande aucun complément, c'est stand alone.
y'a quelques modifs à faire mais rien de compliqué (un chemin foireux dans une des fichiers à remplacer), y'a deux fichiers avec les classes. et les fichiers d'exemple.
Marsh Posté le 20-07-2007 à 16:40:07
D'acord je te remercie.
Je vais essayer de me dépatouiller avec mais mais il y a de grande chances pour que j'en reste là ....
Marsh Posté le 19-07-2007 à 08:20:02
Bonjour je suis confronté à un probleme assez épineux et je ne vois actuelement pas comment le résoudre, c'est pourquoi je solicite vôtre aide.
Il me faut automatiser l'update d'une base de donnée depuis un fichier xls (impossible de l'avoir directement en .csv).
L'outil est actuellement developpé en PHP et la personne devant l'utiliser n'étant pas informaticien et devant effectuer cette action tout les matin il faut que tout soit automatiser d'un simple clic (un submit sur l'interface utilisateur).
Faire l'update d'une base de donnée depuis un fichier .csv n'est pas difficile (avec une simple fonction explode on separe les ; ) mais ce qui me pose probleme c'est de passer le fichier au format csv.
L'outil est actuellement developpé en PHP mais n'est pas trés avancé.
Donc si vraiment il n'existe strictement aucune solution en PHP je peux reprendre le tout en VB.
Je vous remercie d'avance pour vôtre aide.