Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMPORTER DES DONNÉES DE EXCEL


Information sur la source

Catégorie :Trucs & Astuces Niveau : Initié Date de création : 15/10/2004 Vu / téléchargé: 11 114 / 1 581

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note

Description

Voici une solution pour importer des données d'un fichier Excel pour les afficher dans une page htm.
L'exemple traite deux cas de figure :
- L'export de données dont la localisation (ligne/colonne) est connue dans le fichier Excel.
- L'export de données par la désignation d'un "article" et sa recherche dans le fichier.
La solution peut être optimisée, en particulier pour les performances. L'idée n'est de donner que des "briques" pour aller plus loin et se servir d'un fichier Excel comme d'une mini base de données.
ATTENTION : dans IE, il faut autoriser l'exécution des ActiveX
 

Conclusion

La solution n'a été testée qu'avec IE6.
L'affichage d'une alerte quand un article n'est pas trouvé n'a pas été traité pour cause de manque de temps ...!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de bultez le 16/10/2004 10:11:11

pas mal, pas mal...
_ si on utile les lignes suivantes :
   var fso=new ActiveXObject
        ("Scripting.FileSystemObject");
    var url=unescape(self.location.pathname);
    var adr=(fso.GetExtensionName(url).toLowerCase()
           !='hta')?1:0;
     var Rep_cour=
           fso.GetParentFolderName(url).substr(adr);
      Path_file = Rep_cour + "\\Excel_import.xls";
_ le fichier sera pris depuis le répertoire où
a été chargé le programme ( on peut même
"automatiser" Excel_import )
_ ne fonctionnera qu'avec Internet Explorer
_ on peut renommer Excel_import.htm en
Excel_import.hta ce qui évite tout message
des active'X.
_ il ne reste plus qu'à améliorer en
proposant une réelle mise à jour
des lignes du fichier excel ( consultation,
modification, création, suppression ).
cordialement.

signaler à un administrateur
Commentaire de arthur81 le 16/10/2004 12:00:43

Merci pour toutes ces remarques bien venues.
Je n'ai pas utilisé les "fso" car le "kit microsoft" n'est pas sur tous les PCs.
Je prends l'idée du *.hta
Pour les améliorations proposées, j'attends qu'il neige !
Merci,  Arthur

signaler à un administrateur
Commentaire de vdzh le 18/10/2004 08:54:46

Bonjour,

Avec Win XP familial, IE6, Excel 2002 : impossible d'ouvrir le fichier Excel !!

Vous dites : "autoriser l'exécution des ActiveX" !
Mais comment fait-on ?
Qu'est-ce que cela engendre pour la sécurité en surfant sur Internet ?

Merci !

signaler à un administrateur
Commentaire de bultez le 18/10/2004 09:31:18

>>Vous dites : "autoriser l'exécution des ActiveX" !
>>Mais comment fait-on ?
_outils
  _options internet
    _sécurité
      _personnaliser niveau pour intranet local ( par ex )
        _cocher Activer Contrôles ActiveX et plugins
>>Qu'est-ce que cela engendre pour la sécurité
>>en surfant sur Internet ?
si activé pour "Internet" on prend les mêmes
risques qu'avec n'importe quel autre exécutable.
cependant message qui indique Active'X
utilisé, au moindre doute quelconque : refuser,
ne pas autoriser dans messagerie ....
cordialement.

signaler à un administrateur
Commentaire de philsim le 18/10/2004 17:18:49

pas mal !! :O)

signaler à un administrateur
Commentaire de coucou747 le 18/10/2004 18:30:49

en fait, actiiveX ne peut être utilisé pour pirater efficacement, enfin faut être un peu débile car le plus simple reste le .exe déguisé en powerpoint, et comme activeX ça ne marcheras efficacement que si c'est sur ton disque, faut de tt façon utiliser un logiciel de messagerie, doinc, outlook est le seul a savoir comment utiliser activeX, c'est aussi le seul a savoir utiliser des .exe de façon imparable... donc, pour la sécu, utilises activeX mais pa outlook....

Certaines rumeurs disent que en activeX on pourrait utiliser certaines fonction qui permetrais de dériver la sécurité.... Perso, je ne sais pas quoi en penser, et j'en ai rien a faire... Ces rumeurs disent qu'il sufirait d'aller sur un site pour que IE laisse passer qqch qui puisse faire très mal...

Enfin activeX c'est pas obligatoire, en général, on peut remplacer ça par autre chose, genre la, c'est pour visualiser un fichier coté client, donc ça ne se fera pas en local, donc autant faire un .exe ou un .php enfin voila, moi je préfèrerais ne pas prendre de risque si on a pas vraiment besoin de ça... Pour une Bdd, le C c'est plus chiant, mais plus rapide, et si on veut pas se faire chier et avoir une vrai base de donnée, on a php + mysql.

signaler à un administrateur
Commentaire de ademonus le 18/03/2005 15:20:57

j'ai une erreur quand j'utilise ce source sur le réseau quelqu'un a une idée comment résoudre ?

A runtime Error has occurred.
Error: Automation server can't create object
il bug sur : oExcel = new ActiveXObject('Excel.Application');
Merci du coup de main :-) !

signaler à un administrateur
Commentaire de bultez le 19/03/2005 09:57:00

>>Error: Automation server can't create object
>>sur : oExcel = new ActiveXObject('Excel.Application');
il faut qu'Excel soit installé, et
avoir les droits pour l'utiliser.

signaler à un administrateur
Commentaire de littlemarley le 26/05/2005 14:18:34

j'ai un probleme, il ne trouve pas mon fichier :
// Chemin du fichier EXCEL avec des "/" et non des "\"
// Le chemin peut aussi être mis en "dur" exemple : Path_file = "c:/mes documents/répertoire/Excel_export.xls"
var Rep_cour = window.location.href;           // Répertoire de la page htm en cours
var Index = Rep_cour.lastIndexOf("/");         // Rechecher du dernier séparateur /
var Rep_cour = Rep_cour.substring(0,Index);    // Répertoire du fichier
Path_file = "c:/mes documents/seithacomsaia/base de données_année_2005.xls";


il va me le chercher dans le dossier system 32 de windows ???
je ne comprend pas est ce que quelquun peu m'aider ???

signaler à un administrateur
Commentaire de sletis le 13/04/2006 17:26:06

salut! pourrais tu ou pouvez vous me dire comment je pourrais recuperer les valeurs du tableau excel pour les inserer dans ma base de donnée Mysql par exemple!

merci :)

signaler à un administrateur
Commentaire de arthur81 le 13/04/2006 18:40:28

Il existe plusieurs solutions publiées sur Internet.
Par exemple : http://www.excelabo.net/php/excelphp.php

Arthur

signaler à un administrateur
Commentaire de sletis le 14/04/2006 02:21:06

je te remerci je mets 9 pour ton code que je me suis amusé a manipuler! ;)

signaler à un administrateur
Commentaire de chapata le 27/04/2006 11:57:48

Hi,

perso mois j'ai trouver ton super ... je men sert pour lister tout un répertoire et récupérer des données dans chaque fichier.xls.
Mais connais-tu le code pour activer tel ou tel onglet du fichier ? J'ai un autre problème lorsque je suis en lecture seule ... arrêt du code.Si quelqu'un a une idée ?

Merci

signaler à un administrateur
Commentaire de arthur81 le 28/04/2006 08:13:47

De mémoire, un onglet est désigné par "WorkSheets[x]"
x étant le N° de l'onglet du dossier.
Pour le rendre visible il faut faire :
WorkSheets[x].Visible = True

Si ça ne marche pas, il faut aller sur le site de Microsoft et trouver un exemple.

Pour la "lecture seule.." je ne sais pas

Arthur

signaler à un administrateur
Commentaire de chapata le 28/04/2006 09:18:49

Hello Arthur81 (et tout les autres bien sur ...)

le code exacte est :

var xls = new ActiveXObject('Excel.Application');
var path_file = "c:\fichier.xls";
xls.WorkBooks.Open (path_file);
xls.visible = true;
xls.WorkSheets(1).Select; //pour la sélection d'un onglet en particulier le numéro d'index ou xls.WorkSheets("nom_onglet").Select;

xls.WorkBooks.Close;
xls.Quit();

Merci pour l'aide Arthur ...
maintenant ne reste plus qu'a effectuer les gestions d'erreurs possible (lecteur seule, si le fichier n'éxiste pas, si l'onglet n'éxiste pas et toute erreur possible en tout genre ...)
Si une personne à déjà fait un code comme ceci ... preneur je suis.

Merci à vous et bonne journée.
ChaPaTA

signaler à un administrateur
Commentaire de David78390 le 01/12/2006 09:46:47

Tres bon c'est exactement ce que je cherchais.
Merci

signaler à un administrateur
Commentaire de David78390 le 04/12/2006 11:32:42

Juste une question: sur mon poste, je ne peux pas acceder a excel, tant que ma page html n'est pas fermée.
Faut-il detruite
var fso=new ActiveXObject("Scripting.FileSystemObject");   ???
Si oui Comment faire??.

Merci d'avance.
(Et un 9 de plus pour ton code)

signaler à un administrateur
Commentaire de David78390 le 11/12/2006 15:22:26

J'avais un probleme:
le processus "Excel.exe" restait en mémoire empêchant toute ouverture manuelle d'autres documents Excel tant que la page html etait ouverte.

Il suffit de rajouter
oExcel=null;
aprés le
// fermeture de EXCEL sinon supprimer les deux lignes
oExcel.WorkBooks.Close;
oExcel.Quit();


Voila Ciao

signaler à un administrateur
Commentaire de carcamax le 29/11/2007 18:58:13

Bonsoir,
J'ai testé et c'est vraiment pas mal.
Mon soucis : je souhaite l'appliquer en local 'excel installé' mais ma page est sur un serveur de fichier sur lequel excel n'est pas installé. Est-ce la raison du message d'erreur : Error: Automation server can't create object
sur : oExcel = new ActiveXObject('Excel.Application');

Quelles autres solutions qu'une instal d'excel ?
Merci

signaler à un administrateur
Commentaire de David78390 le 29/11/2007 19:43:59

Je ne suis pas sur du coup, mais:
Théoriquement l'execution se fait en local do,c coté client. Donc le fait que excel ne soit pas sur le serveur ne doit pas poser probleme.

Es-tu sous Vista coté client????? Si oui méfie toi car plein de chose ne marche pas sous ce syteme de .....
(perso jutilisais plusiseurs script et du PDF.LoadFile qui ne fonctionne plus sous vista)

Voila une premiere bride d'explication, peut-etre...

signaler à un administrateur
Commentaire de carcamax le 29/11/2007 20:28:55

Bonsoir DAVID78390,
Je suis sous xp coté client, ça marche systématiquement en local (+sieurs tests),d'ou ma question.
J'ai supposé que l'activex placé en js. cherchait excel sur le serveur.
Je n'ai pas essayé non plus de placer le code dans ma page directement...
Merci de ton interêt...

signaler à un administrateur
Commentaire de David78390 le 29/11/2007 21:22:00

Pas de soucis: le code est vraiment sympa et m'a été tres util pour ce que je faisait, d'ou l'aide que je tente de t'ammener.

Pour ton prb, il me semblait que le fichier été rapatrié sur le client le temps de la modif (apparement je me suis gouré)
Xp coté client mais le serveur est sur le net ou sur un pc distant (réseau d'entreprise) et en XP aussi (dsl si j'insiste mùais vista est vraiment pas mon amis)

Si tu est sur un PC distant , tente d'installer excel, ca permettera de savoir ou s'execute l'ouverture excel.

Voili, voilou.

signaler à un administrateur
Commentaire de carcamax le 29/11/2007 21:35:46

Pas de test ce soir... mais j'retente qq chose demain.
En fait tout est coté serveur (PC sans excel), j'ouvre juste mes pages webs coté client. Je suis tout tout débutant, donc je cherche je cherche...
Si je trouves j'déposerais un com. Si qqun sait, chui preneur.

Bonne soirée.

signaler à un administrateur
Commentaire de David78390 le 29/11/2007 22:24:37

Je testerais au boulot demain (si je trouve un peu de temp lol)
Je viens de re-telecharger la source et ....
Je me demande, si ce n'est pas au niveau de de la reconstitution du chemin que tu as un probleme.

Pour avancer il faudrait savoir ou s'execute excel exactement ????

Petite chose pour esseyer d'y voir plus clair:
-aprés la reconstitution du chemin dans le code (ligne 63), ajoute : alert(Path_file); // ca te donnera le chemin que le js en deduis
-note bien ce chemin
-ferme tout
-lance excel sur ton poste et fais fichier ouvrir, et la tu tape le chemin noté predement.
Si le fichier ne souvre pas, c'est le chemin déduit par js qui merdouille.

@+

signaler à un administrateur
Commentaire de David78390 le 29/11/2007 22:31:58

Derniere remarque , tu as dit:
>> En fait tout est coté serveur (PC sans excel), j'ouvre juste mes pages webs coté client.
NON, pour moi c'est ton client qui ouvre le excel.
C'est comme lorsque tu as tu flash sur un site, si ton PC n'as pas le logiciel, tu ne vois pas l'annimation flash.

La nuit porte conseil......

A demain soir pour le resultat des  tests

signaler à un administrateur
Commentaire de carcamax le 02/12/2007 07:45:10

Bonjour,
après +sieurs tests, la soluce ce trouve dans le paramètrage des droits coté serveur et le réglage des pramètres de sécurité de IE. J'ai placé mon "site" dans les sites de confiance ,et autorisé les scripts non marqués.
L'activex se lance bien coté client....
Encore Merci pour ton interêt DAVI78390, et peut être à bientot pour d'autres questions ...

signaler à un administrateur
Commentaire de David78390 le 02/12/2007 13:18:52

Bien joué. Par contre, t'es du genre matinal ;)
Ce qui me surprend dans ta soluce, c'est que c'est du coté serveur que tu asdu modifier les droits. Là ça m'échappe??
Enfin si ca marche c'est l'essenciel.
@+

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Appels d'offres



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,640 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.