Exporter un tableau vers Excel

chezeu Messages postés 21 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 6 juin 2010 - 3 oct. 2008 à 14:18
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 4 oct. 2008 à 13:22
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 oct. 2008 à 14:40
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]
0
chezeu Messages postés 21 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 6 juin 2010
4 oct. 2008 à 13:04
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!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 oct. 2008 à 13:22
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]         
0
Rejoignez-nous