sql vers excel (ou cvs) et vice versa

ico
Invité n'ayant pas de compte PHPfrance

30 juin 2005, 23:51

voila je creer un site pour mon travail qui servira de référentiel application avec différents champs.

et je voudrait savoir si d'une part il est possible d'importez directement par un lien ou un bouton la base sql pour pouvoir l'ouvrir et la completez avec excel et ensuite de reinjecté ce fichier dans la base.


merci d'avance

Invité
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 00:21

Excel est capable de récupere dans un tableau des données d'une base de données

Excel est capable d'insérer des données dans une base de données. Cependant c'est un peu délicat, car pour chaque ligne du tableau excel :
1/ vérifier si ligne existe ou non dans table de base de données
2/ si non => insérer
3/ si oui => mettre à jour la ligne dans la base ( on suppose que dans ton fichier Excel on ne modifie par la PK)
4/ de plus il faut gérer les lignes qui ont été supprimé du fichier Excel ... on n'en a plus aucune trace ... pas glop pas glop

Si tu abordes ce type de solution te devrais aller sur un forum VBA (langage de macro d'Excel)

Eléphant du PHP | 91 Messages

01 juil. 2005, 00:28

Excel est capable de récupere dans un tableau des données d'une base de données

Excel est capable d'insérer des données dans une base de données.
Cependant c'est un peu délicat, car pour chaque ligne du tableau excel :
1/ vérifier si ligne existe ou non dans table de base de données
2/ si non => insérer
3/ si oui => mettre à jour la ligne dans la base ( on suppose que dans ton fichier Excel on ne modifie par la PK)
4/ de plus il faut gérer les lignes qui ont été supprimé du fichier Excel ... on n'en a plus aucune trace ... pas glop pas glop

Autre solution plus bourin mais efficace et fiable
1/ tu récupéres les données de la base dans Excel
2/ tu modifies Excel
3/ tu supprimes toutes les lignes dans la base
4/ tu inséres toutes les lignes d'Excel dans la base

Si tu abordes ce type de solution te devrais aller sur un forum VBA (langage de macro d'Excel)

ico
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 00:49

Je sais que c'est possible avec vba mais sa aurait été plus pratique de de tout avoir sur la meme page ou alors est ce que je peu creer un application outil
avec vba qui ce lancerait a partir du site ?

je connais pas le vba et je début en php

Eléphant du PHP | 91 Messages

01 juil. 2005, 08:57

avant de t'aider des questions

Ton application PHP est en local ou chez un hébergeur ?
Quel est ta base ? MySQL , SYBASE , ORACLE , SQL SERVER ????
Ta BASE est en local ou chez un hébergeur ?

Invité
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 08:59

alors pourtant l'instant c'est developper en local et sa le restera
et j'utilise mysql comme base de donnée

ico
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 09:07

alors pourtant l'instant c'est developper en local et sa le restera
et j'utilise mysql comme base de donnée
c'est moi au dessus

alors pour l'instant

Eléphant du PHP | 91 Messages

01 juil. 2005, 18:12

heu ... piloter EXCEL depuis une application PHP et inversement, c'est possible ... mais on oublie c'est trés complexe !!!! Donc on utilise soit l'un soit l'autre.

1/ Extraite les données de ta table en mode texte

Code : Tout sélectionner

C:\Program Files\EasyPHP1-8\mysql\bin>mysqldump -h localhost --user root --password xxxx --fields-terminated-by=, --lines-terminated-by=\n --tab=c:\temp pipo T
Si pas de mot de passe (c'est pas bien .... mais en local que pour toi on s'en moque ;-) )

Code : Tout sélectionner

C:\Program Files\EasyPHP1-8\mysql\bin>mysqldump -h localhost --user root --fields-terminated-by=, --lines-terminated-by=\n --tab=c:\temp pipo T
Avec
  • pipo => nom de ta base
    T => nom de ta table
2/ tu obtiens c:\temp\T.sql l'ordre de création de ta table et c:\temp\T.txt les données au format CVS.

3/ depuis Excel, menu Fichier/Ouvrir tu ouvres c:\temp\T.txt. Choisir séparateur virgule (coma in us)

4/ tu modifies dans Excel

5/ tu sauvegardes depuis Excel en format CVS (menu Fichier\Enregistrer sous ... choisir type CSV comma delimited) dans T2.txt

6/ tu vides ta table T

7/ tu utilises l'utilitaire mysqlimport (dans C:\Program Files\EasyPHP1-8\mysql\bin) pour recharger les données depuis T2.txt


C'est trés bourrin comme méthode. Mais c'est OK si
- tu as pas mal de ligne dans ta table
- beaucoup de ligne à modifier
- tu n'as à faire cette opération qu'une fois par an au plus

Si ce n'est pas le cas, un formulaire en PHP pour faire des mise à jour serait plus judicieux.

PS : avant de vider ta table pour la recharger, fais des tests

ico
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 13:45

merci je viens juste de voir le post j'essairai

merci bcp