Exporter un tableau vers Excel

Signaler
Messages postés
21
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
6 juin 2010
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Merci pour le code mais la fonction ne s'execute pas chez moi. Qu'est qu'il faut faire? y'a t'il quelque chose à faire sur le tableau. SVP j'attend votre reponse
voici mon code.


<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Export</title>
<style type="text/css">
<!--
.InEo {visibility:hidden; font-size: 9px;    }
.InEo {visibility:visible; font-size: 9px   }
-->
</style>
<SCRIPT type="text/javascript">
function exportToExcel(tableau) {
 oExcel = new ActiveXObject('Excel.Application');
 oWkBooks = oExcel.Workbooks.Add;
 oExcelSheet = oWkBooks.Worksheets(1);
 oExcelSheet.Activate();
 nbrCellules = tableau.cells.length;
 for (i = 0; i < tableau.cells.length; i++) {
  nbrCellules = nbrCellules + (tableau.cells(i).colSpan * tableau.cells(i).rowSpan) - 1;
 }
 nbrColonnes = Math.ceil(nbrCellules / tableau.rows.length);
 tab = new Array();
 for (j = 0; j < nbrCellules; j++) {
  tab.push('*');
 }
 decal = 0;
 for (k = 0; k < tableau.cells.length; k++) {  if ((tableau.cells(k).colSpan 1) && (tableau.cells(k).rowSpan 1)) {
   if (k != (tableau.cells.length - 1)) {
    while (tab.slice((k + decal), (k + decal + 1)) == '') {
     decal = decal + 1;
    }
   }
   tab.splice((k + decal),1,tableau.cells(k).innerText);
  } else if ((tableau.cells(k).colSpan > 1) && (tableau.cells(k).rowSpan == 1)) {
   tab.splice((k + decal),1,tableau.cells(k).innerText);
   for (l = 0; l < (tableau.cells(k).colSpan - 1); l++) {
    tab.splice((k + decal + l + 1),1,'');
   }
   decal = decal + tableau.cells(k).colSpan - 1;
  } else if ((tableau.cells(k).colSpan == 1) && (tableau.cells(k).rowSpan > 1)) {
   tab.splice((k + decal),1,tableau.cells(k).innerText);
   for (m = 0; m < (tableau.cells(k).rowSpan - 1); m++) {
    tab.splice((k + decal + ((m + 1) * nbrColonnes)),1,'');
   }
  } else if ((tableau.cells(k).colSpan > 1) && (tableau.cells(k).rowSpan > 1)) {
   tab.splice((k + decal),1,tableau.cells(k).innerText);
   for (n = 0; n < tableau.cells(k).rowSpan ; n++) {
    for (o = 0; o < tableau.cells(k).colSpan ; o++) {
     if ((n == 0) && (o != 0)) {
      tab.splice((k + decal + n + 1),1,'');
      decal = decal + 1;
     } else if (n != 0) {
      tab.splice(k + decal + (nbrColonnes - tableau.cells(k).colSpan) + o + 1 + ((n - 1) * nbrColonnes),1,'');
     }
    }
   }
  }
 }
 for (m = 0; m < tab.length; m++) {
  r = Math.ceil((m + 1) / nbrColonnes);
  c = (m + 1) - ((r - 1) * nbrColonnes);
  oExcel.ActiveSheet.Cells(r,c).Value = tab.slice(m,(m + 1));
 }
 oExcelSheet.Application.Visible = true;
}
</SCRIPT>


</head>



&nbsp;

  ----

    &nbsp;,
    &nbsp;,
    &nbsp;,
    &nbsp;,
 
  ----

    &nbsp;,
    &nbsp;,
    &nbsp;,
    &nbsp;,
 
  ----

    &nbsp;,
    &nbsp;,
    &nbsp;,
    &nbsp;,
 
  ----

    &nbsp;,
    &nbsp;,
    &nbsp;,
    &nbsp;,
 

 

&nbsp;

</html>

 

3 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
bonjour,
ben voila, même s'il fallait rester sur la question
initiale c'est bien mieux qu'un message privé !
plus de lecteurs, d'intervenants, de compétances,
plus de chances de réponses tout simplement
sans parler que ça peut intéresser d'autre personnes ...

debugger !!

 nbrCellules = tableau.cells.length;

tableau.cells.length ?   n'existe pas !
le nombre de cellule est lié à la ligne
tableau.rows[n° de ligne].cells.length

et pour le debug :

FireFox
, regarder la "console d'erreurs"
Outils / Console d'erreurs
et mieux : télécharger mon Site][M'écrire]
Messages postés
21
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
6 juin 2010

Ok Merci ça marche bien avec un tableau statique, mais le probléme c'est que j'ai un tableau dynamique qui est rempli avec les données de la BD, et dans ce cas ci ça ne marche plus. comment faire alors? Merci d'avance!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
ben... statique ou dynamique crée avec le php je suppose ? c'est la même chose.
php ne fait jamais que créer une page html...

donc vu coté client/javascript c'est toujours "statique"
( sauf si on modifie ce tableau en js bien sûr )

          Bul    [mon Site] [M'écrire]