Exporter un tableau html vers un fichier csv

Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
- - Dernière réponse : twelf
Messages postés
1
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 janvier 2015
- 13 janv. 2015 à 11:19
Bonjour tt le monde,
en effet je veux un script qui récupére les données dans un tableau html et qui génére ensuite un fichier csv ( « comma-separated values », « comma-separated values » pour representation des données tabulaires).
sur ce forum un script qui ressemble un peu a ce que je veux mais comme je suis débutant j'ai du mal a le modifier "car je suis nul en js", en fait le script que j'ai trouvé consiste a donnée un id (tag) au tableau html qu'on veut traité, ensuite en cliquant sur un boutant ..EXCEL se lance et on y trouve ttes les données du tableau html, mais ce que je veux c'est tt simplement généré un fichier .csv 

Aidez moi chers amis car j'ai vraiment besoin de votre aide  
Afficher la suite 

18 réponses

Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
Bonjour,

    je veux, je veux... t'es marrant toi : et si ce n'est pas possible ?

    question d'abord : fichiers locaux ?
       oui ==> tout simple, mais ActiveX nécessaires
       non ==> langage serveur nécessaire ( asp, php, ror ... )

<hr />


Cordialement                Bul    
Commenter la réponse de cs_bultez
Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
0
Merci
En fait , oui , des fichiers locaux , SI C'EST POSSIBLE
Commenter la réponse de aljazzar
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
je ne dis pas que c'est exclusif Internet explorer
    mais :
utiliser l'ActiveX FileSystemObject (par exemple)
    quelques explications ici


<hr />



Cordialement                Bul        
Commenter la réponse de cs_bultez
Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
0
Merci
Merci infiniment , j'irai voir les explications ... ( si jamais je ne comprends rien, je te contacte !!  ) 
Commenter la réponse de aljazzar
Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
0
Merci
RE !



 peux tu s'il te plait m'envoyer un exemple de script d'une fonction qui prend en arg un id (le id du tableau html <table id= idTable > ) , qui  récupere les données de ce tableau et qui retourne un fichier contenant tte ces données séparé par ";" .

Aides moi s'il te plait !
Merci d'avance !!

cordialement,
Le loozer !!
Commenter la réponse de aljazzar
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
pas de souci. et si ce ne sera moi, ce sera un autre intervenant. @+
<hr />


Cordialement    Bul    
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
qu'est-ce qui ne va pas dans ton script ?
<hr />


Cordialement            Bul        
Commenter la réponse de cs_bultez
Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
0
Merci
En fait je suis completement nul en js , c'est la premier fois que j'utilise ce langage , je veux juste un petit exemple ... un tout petit ensuite je me debrouillerai .


Merci
Commenter la réponse de aljazzar
Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
0
Merci
en effait je veux un code qui ressemble a celui la (voir en bas) mais qui au lieu de lancer EXCEL , me générera en sortie un fichier csv « comma-separated values ».
Voila le code que j'ai trouvé sur ce site :
/*****************************************
@Nom de la fonction : exportToXL
  @Description : Rempli une feuille Excel avec le contenu 
  d'un tableau
  @Entrées :
    id -> id du tableau à exporter
  @Sorties :
    En cas d'erreur renvoie false
---------------------------------------------------------*/
function exportToXL(id) {
eSrc=document.all(id) // recherche le composant ayant cet id
var oExcel;    // Application Excel
var oExcelSheet;  // Feuille de calcul
var oWkBooks;
var cols;    // Nombre de colonnes du tableau

oExcel = new ActiveXObject('Excel.Application');
oWkBooks = oExcel.Workbooks.Add;
oExcelSheet = oWkBooks.Worksheets(1);

oExcelSheet.Activate();
    
if (eSrc.tagName != 'TABLE') {
  alert('L\'export vers Excel ne fonctionne qu\'avec un tableau.');
  return false;
}

// on calcule ici le nombre de cellule du tableau.
 nb_cellule=eSrc.cells.length
 for (var i = 0; i < eSrc.cells.length; i ++)
 {
  nb_cellule=nb_cellule+eSrc.cells(i).colSpan-1 
 }

// on en deduit le nombre de colonne de notre fichier excel
 cols = Math.ceil(nb_cellule / eSrc.rows.length);

// nombre de cellule qu'il faut "passer " a cause du colspan
nb_colspan=0 
      
// on initialise les valeures des cellules des tableau excel   
    
 for (var i = 0; i < eSrc.cells.length; i ++)
 {
     
   var c, r;
   r = Math.ceil((i+nb_colspan+1) / cols);  //lignes excel  en cours
   c = (i+nb_colspan+1)-((r-1)*cols)    //colonnes  excel en cours
   
 
   
   nb_colspan = nb_colspan+eSrc.cells(i).colSpan-1; // mise a jour de nb_colspan
  
 
// gestion du colspan, on effectue un centrage sur plusieurs cellules ...
 
    if (eSrc.cells(i).colSpan > 1 ) 
     for (var j = 0; j < eSrc.cells(i).colSpan; j ++){
      
      oExcel.ActiveSheet.Cells(r,c+j).HorizontalAlignment = 7 ;
       //  xlCenterAcrossSelection = 7 dans VBA 

     } 
     
// pour le codage des couleurs j'ai pas trouver comment faire pour que ce soit autaumatique la convertion
// alors elle est manuelle: 336699 c'est du RVB en HEXA leur chiffre sous excel
// j'en ai aucune idée ...
 
    if (eSrc.cells(i).bgColor=='#336699') // gestion des couleurs 
     for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
     oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = 3368601 ; 
     
// mise en forme dans excel celon la classe de la cellule si vous avez un fichier CSS 

 
 if (eSrc.cells(i).className=='titre' )
   {
   oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
   oExcel.ActiveSheet.Cells(r,c).Font.Size = 15;
   oExcel.ActiveSheet.Cells(r,c).WrapText = false; // pas de retour a la ligne automatique
   oExcel.ActiveSheet.Cells(r,c).Font.ColorIndex = 3;
   }
   
  if (eSrc.cells(i).className=='sstitre' )
   {
   oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
   oExcel.ActiveSheet.Cells(r,c).Font.Size = 12;
   }
       
//En tête de colonnes
   if (eSrc.cells(i).tagName == 'TH') {  
     oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
     }
   
       
// Texte en gras
   if (eSrc.cells(i).childNodes.length > 0 && eSrc.cells(i).childNodes(0).tagName == "B"){ 
     oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
     }  
     
   // Rempli le contenu 
   oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
 }
oExcel.ActiveSheet.Cells.EntireColumn.AutoFit; // ajuster la largeur des colonnes sous excel.

oExcelSheet.Application.Visible = true;

}
Commenter la réponse de aljazzar
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
ne comptes pas trop sur les autres pour tout te faire,
tentes de remplacer la gestion d'Excell par l'écriture  dans un fichier :
tu as toutes les billes, la syntaxe...
reposes une question si un point ne fonctionne pas.
<hr />


Cordialement            Bul    
Commenter la réponse de cs_bultez
Messages postés
24
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
5 avril 2007
0
Merci
T'as raison , sauf que je n'ai jamais fait de ma vie du js, et c'est depuis 6 mois que je prends des cours en informatique  donc c'est pas aussi simple pour moi que ça . !
de toute maniere je te remercie pour tes réponse.
si jamais tu change d'avis et que t'as un tout petit peu de temps pour adapter le code que je t'ai montré a mon cas , je serai tres reconnaissant  .
mon mail est : mathematicien@hotmail.com
P.S : si t'as besoin de quoi que ce soit en maths ...je serai a ta disposition
Commenter la réponse de aljazzar
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009
0
Merci
6mois en prog web c'est suffisant pour fair ce genre de choses (j'y suis depuis à peu près 6 mois aussi, sans travail intensif, quand 'jai du temps libre parfois, autodidacte, avec parfois l'aide de Bultez aussi que je dois remercier, et en naviguant entre html, css (bon ca c'est fait), javascript , PHP, et d'autres langages processesurs quand l'envie m'en vient). ENfin bref je vais te dire ce que je vois en regardant rapidement.

Le code que tu as donné (et dont l'auteur fait autant de fautes de français que toi) utilise un ActiveX spécial avec des fonctions spécifiques à Excel. Toi ce qu'il te faut c'est récupérer les données (dans ton tableau si j'ai bien compris) en le séparant par des 'comas', donc avec une boucle -> une entrée, une apostrophe, une entrée, une apostrophe... puis après utiliser les fonctions d'écriture de fichier (avec un ActiveX aussi à ce que t'a dit Bultez, regarde celui qu'il t'a donné, ou si tu ne comprends pas lance des recherches sur les fonctions d'écriture de fichier en javascript) et après tu n'as plus qu'à entrer la variable texte précéement créée dans le fichier, ligne par ligne.

Tout ça si 'jai bien compris ce que tu voulais faire, je n'ai jamais vu un efichier csv de ma vie.

Nitruk
Commenter la réponse de Nitruk
Messages postés
4
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 juillet 2009
0
Merci
Bonjour à tous,
agréable discussion ;-) je sais que ça date de longtemps mais je veux juste porter une remarque:
les exemples fournis marchent juste IE, pas de truc pareils pour fireFox ?
Commenter la réponse de mehdipolo
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
plus de 2 ans !
>>les exemples fournis marchent juste IE,
à l'époque oui
>>pas de truc pareils pour fireFox ?
si, aujourd'hui, on peut
( pas encore avec opera, chrome, safari ... je pense )

ch'tiot exemple ici qui gère des fichiers
locaux avec FireFox ( et liens vers des
explications )
Commenter la réponse de Bul3
Messages postés
4
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 juillet 2009
0
Merci
salut,
oui c vrai 2 ans ça passe vite.
je jette un coup d'oeil sur les exemples, merci pour la réponse. t'es rapide.
Commenter la réponse de mehdipolo
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
>>t'es rapide
bah... prévenu par mail dès qu'un
ajout est fait... pas de mérite
Commenter la réponse de Bul3
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009
0
Merci
Et maintenant deux mails, non ?


Nitruk
Commenter la réponse de Nitruk
Messages postés
1
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 janvier 2015
0
Merci
Quelques années ont passé mais je me suis retrouvé devant le même problème. J'ai écrit un script en JS/jQuery permettant d'exporter en CSV les premières et deuxièmes colonnes d'une table HTML :
<script>
$(function() {
 $('#table tr').each(function() {
  var ch = $(this).children('td');
  $('#result').text(
   $('#result').text()
   + $(ch[0]).text()
   + ","
   + $(ch[1]).text()
   + "\n"
  );
 });
});
</script>
...
<pre id="result"></pre>

Il suffit de copier coller le contenu de #result dans un fichier texte enregistré en .csv et ça s'importe partout.
Commenter la réponse de twelf