[PHP/MySQL] Automatisation convertion xls -> csv pour update BDD (en p

Automatisation convertion xls -> csv pour update BDD (en p [PHP/MySQL] - PHP - Programmation

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.

Reply

Marsh Posté le 19-07-2007 à 08:20:02   

Reply

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 ?

Reply

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.

Reply

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 ?

Reply

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/

Reply

Marsh Posté le 19-07-2007 à 12:05:01    

Moriar6 a écrit :

Au sujet de la macro peux-tu expliciter ?


là c'est assez bien expliqué :o

Reply

Marsh 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.

Reply

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) ;)

Reply

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 :)

Reply

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.
 

Reply

Marsh Posté le 19-07-2007 à 16:42:31   

Reply

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 ?

Reply

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. ;)

Reply

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.

Reply

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?

Reply

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.

Reply

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.

 


Message édité par rengzehn le 20-07-2007 à 13:39:32
Reply

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à ....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed