begin process at 2010 03 18 04:07:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > EXPORTER UN TABLEAU SOUS EXCEL (BIS)

EXPORTER UN TABLEAU SOUS EXCEL (BIS)


 Information sur la source

Note :
3,67 / 10 - par 3 personnes
3,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :17/10/2003 Vu :10 347

Auteur : phm

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Je voulais faire un commentaire à la contribution 16372 d'@lphonse
mais mon texte est sans doûte trop long.
Ma contribution n'est qu'une adaptation de cette superbe contribution.

J'ai travaillé sur les couleurs en reprenant toDecimal cité dans un commentaire
Voici mes modestes adaptations :
attention j'ai squizzé la gestion des styles d'@lphonse (par flemme).
Bravo @alphonse et shubacca c'est génial !!!!!!!!!!!

la function todecimal trouvée sur ce site (localstone id 16365) est intacte
par contre j'ai simplifié HTMLtoRGB

j'ai mis en dur une couleur de fond de la table
car je n'ai pas réussi à la récupérer dans le html
vcolorTABLE=HTMLtoRGB("#FFFFE0");

La partie intéressante :

if (eSrc.cells(i).bgColor != "") {
vcouleurHEXA=eSrc.cells(i).bgColor;
vcolor=HTMLt oRGB(vcouleurHEXA);

   for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
   oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = vcolor ;
}
else
{
   for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
   oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = vcolorTABLE ;
}


Source

  • // javascript entier : (sans les styles)
  • <script LANGUAGE=javascript>
  • <!--
  • function toDecimal(toDecimal_number) {
  • var toDecimal_sum = 0;
  • for (i = 0 ; i < toDecimal_number.length ; i++) {
  • var toDecimal_string = toDecimal_number.substr(i, 1);
  • var toDecimal_power = toDecimal_number.length - 1 - i;
  • switch (toDecimal_string) {
  • case 'a' : case 'A' : toDecimal_string = 10; break;
  • case 'b' : case 'B' : toDecimal_string = 11; break;
  • case 'c' : case 'C' : toDecimal_string = 12; break;
  • case 'd' : case 'D' : toDecimal_string = 13; break;
  • case 'e' : case 'E' : toDecimal_string = 14; break;
  • case 'f' : case 'F' : toDecimal_string = 15; break;
  • }
  • toDecimal_sum += toDecimal_string * (Math.pow(16, toDecimal_power));
  • }
  • return (toDecimal_sum);
  • }
  • function HTMLtoRGB(str) {
  • R=str.substr(1,2);
  • V=str.substr(3,2);
  • B=str.substr(5,2);
  • return (toDecimal(R)+ (toDecimal(V)*256) + (toDecimal(B)*256*256));
  • }
  • /*---------------------------------------------------------
  • 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;
  • }
  • vcolorTABLE=HTMLtoRGB("#FFFFE0");
  • // 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
  • if (eSrc.cells(i).bgColor != "") {
  • vcouleurHEXA=eSrc.cells(i).bgColor;
  • if (vcouleurHEXA=="lightyellow")
  • vcouleurHEXA="#FFFFE0";
  • if (vcouleurHEXA=="lightgreen")
  • vcouleurHEXA="#90EE90";
  • if (vcouleurHEXA=="lightblue")
  • vcouleurHEXA="#ADD8E6";
  • vcolor=HTMLtoRGB(vcouleurHEXA);
  • for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
  • oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = vcolor ;
  • }
  • else
  • {
  • for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
  • oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = vcolorTABLE ;
  • }
  • //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;
  • }
  • //-->
  • </script>
// javascript entier : (sans les styles)

<script LANGUAGE=javascript>
<!--
			function toDecimal(toDecimal_number) {
				var toDecimal_sum = 0;
				for (i = 0 ; i < toDecimal_number.length ; i++) {
					var toDecimal_string = toDecimal_number.substr(i, 1);
					var toDecimal_power = toDecimal_number.length - 1 - i;
					switch (toDecimal_string) {
						case 'a' : case 'A' : toDecimal_string = 10; break;
						case 'b' : case 'B' : toDecimal_string = 11; break;
						case 'c' : case 'C' : toDecimal_string = 12; break;
						case 'd' : case 'D' : toDecimal_string = 13; break;
						case 'e' : case 'E' : toDecimal_string = 14; break;
						case 'f' : case 'F' : toDecimal_string = 15; break;
					}
					toDecimal_sum += toDecimal_string * (Math.pow(16, toDecimal_power));
				}
				return (toDecimal_sum);
			} 
			
			function HTMLtoRGB(str) {
	R=str.substr(1,2);
	V=str.substr(3,2);
	B=str.substr(5,2);
	return (toDecimal(R)+ (toDecimal(V)*256) + (toDecimal(B)*256*256));
			}
		
/*---------------------------------------------------------
  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;
}
vcolorTABLE=HTMLtoRGB("#FFFFE0");

// 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 

if (eSrc.cells(i).bgColor != "") {
vcouleurHEXA=eSrc.cells(i).bgColor;

if (vcouleurHEXA=="lightyellow")
vcouleurHEXA="#FFFFE0";

if (vcouleurHEXA=="lightgreen")
vcouleurHEXA="#90EE90";

if (vcouleurHEXA=="lightblue")
vcouleurHEXA="#ADD8E6";

vcolor=HTMLtoRGB(vcouleurHEXA);

	   	for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
	   	oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = vcolor ;	
}
else
{
	   	for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
	   	oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = vcolorTABLE ;
}

	        
//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;

}
//-->
</script>

 Conclusion

Merci à @lphone et shubacca
j'espère qu'on va arriver à faire évoluer tout ça ensemble

(couleur des caractères, bgcolor de la table, encadrement, gestion des css, lecture du caption etc...)

Attention :
Le contrôle activex ne fonctionne que si on a autorisé les activex dans les options du navigateur
(activex non signés)

A+

phm


 Sources du même auteur

RÉCUPÉRER DES SÉLECTION MULTIPLES D'UN POPUP SELECT

 Sources de la même categorie

ACCÈS À LA MÉTHODE SETATTRIBUTE('STYLE','') SOUS IE6 par masternico
OUTIL DE SÉLECTION par jdmcreator
Source avec Zip SIMPLIFIER LA CREATION DYNAMIQUE D'ELEMENT HTML par kazma
DÉTECTER SI CSS EST ACTIVÉ par jdmcreator
RETROUVER LE NUMÉROS DE TELEPHONE DE VOTRE EMPLOYER RAPIDEME... par rappise

Commentaires et avis

Commentaire de phm le 22/10/2003 11:44:58

function Encadre(myCell)
{
xlToRight=-4161;
xlDown=-4121;
xlNone=-4142;
xlEdgeLeft=7;
xlEdgeTop=8;
xlEdgeBottom=9;
xlEdgeRight=10;
xlContinuous=1;
xlThin=2;
xlAutomatic=-4105;
xlInsideVertical=11;
xlInsideHorizontal=12;
    myCell.Borders(xlEdgeLeft).LineStyle = xlContinuous;
        myCell.Borders(xlEdgeLeft).Weight = xlThin;
        myCell.Borders(xlEdgeLeft).ColorIndex = xlAutomatic;

    myCell.Borders(xlEdgeTop).LineStyle = xlContinuous
    myCell.Borders(xlEdgeTop).Weight = xlThin
    myCell.Borders(xlEdgeTop).ColorIndex = xlAutomatic
  
    myCell.Borders(xlEdgeBottom).LineStyle = xlContinuous
          myCell.Borders(xlEdgeBottom).Weight = xlThin
          myCell.Borders(xlEdgeBottom).ColorIndex = xlAutomatic

   myCell.Borders(xlEdgeRight).LineStyle = xlContinuous
         myCell.Borders(xlEdgeRight).Weight = xlThin
         myCell.Borders(xlEdgeRight).ColorIndex = xlAutomatic

}

Commentaire de phm le 22/10/2003 11:56:13

  // Rempli le contenu
  oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
     // Encadre
  myCell=oExcel.ActiveSheet.Cells(r,c);
  Encadre(myCell);

}

Commentaire de phm le 22/10/2003 12:06:36

J'ai fait qq adaptation supplémentaires
que j'ai ajouté sous forme de commentaires
dans la contribution d'alphonse id 16372
normal tout ça c'est grâce à lui.

-suppression de la grille
- récup du CAPTION et insertion d'un titre en ligne 1
- Couleur de fond de la table

A+++

Commentaire de proffial le 27/12/2003 00:16:54

oula mais c'est génial ;)

en fait tout ca c'est grace a shubacca tout d'abord ...

Et ca fait super plaisir que vous compreniez comment ca marche ;)

il faudrait juste rajouter une ptite capture et hop le tour et joué ;)

sinon moi j'avais fait ca pendant un stage, j'avais le temps, mais pendant les eutdes, c'est pas pareil, enfin bon il faut faire avec ;)

Mais ca va revenir ;)

Bon en tout cas bravo, et je change mon commentaire de ma source pour leur dire de venir ici :)

@lphonse

Commentaire de amosc le 30/12/2003 17:09:40

tt simplement bravo pour l'idée et merci de contribuer à l Edifice du monde OpensOurce by et encore bravo ...

Commentaire de niahoo le 17/05/2004 15:25:35

tres bon sccript mais j'ai trois commentaires a ce propos
1 - Je trouve k'il est assez lent, le meme a peu de chose près développé en VB est 2x plus rapide
2 - Le processus Excel ne s'arrête pas après l'avoir fermé (il faut que je le ferme du gestionnaire des tâches)
3 - Pas de gestion des rowspan


Commentaire de eric51 le 15/12/2005 00:05:42

script excellent, mais j'ai tout de même un problème.
Le formatage des cellules est mal géré ds l'exportation.
Peut-être du à des rowspan dans mes tableaux.
Es ce quelqu'un a eu le même prob et a su résoudre le problème?

Commentaire de phdj238 le 27/01/2006 18:19:26

Je souterais supprimmer les tags <BR> ou </BR> ou les remplacer par un saut de ligne valide excel avant importation.

Commentaire de phdj238 le 30/01/2006 14:09:29

Résolu :
Les retours à la ligne à la ligne tag <br> ou </br> à l'intérieur d'une cellule sont mal traduits. En cherchant la méthode consiste avant remplissage de la cellule de supprimmer les retour chariots  \r et de laisser les retours à la ligne \n

if (eSrc.cells(i).innerText.search(/\r\n/) != -1)
{
  mystr = eSrc.cells(i).innerText.replace(/\r/g, '');
  //Rempli le contenu sans carraige return
  oExcel.ActiveSheet.Cells(r,c).Value = mystr;
}
else
{
  // Rempli le contenu
  oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
}

Commentaire de bvadam le 19/06/2007 10:54:57

Salut,

vraiment super ce script mais c'est dommage qu'il ne gère pas les rowspan... Quelqu'un sait à quel niveau il faudrait intervenir pour gérer les rowspan ?

Merci

Commentaire de Renfield le 19/06/2007 12:27:39 administrateur CS

faut jouer avec TonRange.Merge

Commentaire de dadasurf le 07/08/2007 11:02:26

Bonjour,

Après avoir un peu buché sur ce problème de rowspan, je suis parti dans une autre direction consistant à comparer "l'indice réel" dans le tableau à "l'indice fictif" de ce tableau sans tenir compte des colspan et rowspan.
Voici le résultat (en espérant que ça pourra vous aider...):

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 - 2;
}
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 (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) {
tab.splice((k + decal),1,tableau.cells(k).innerText);
tab.splice((k + decal + 1),(tableau.cells(k).colSpan - 1),'');
decal = decal + tableau.cells(k).colSpan - 1;
} else if (tableau.cells(k).rowSpan > 1) {
tab.splice((k + decal),1,tableau.cells(k).innerText);
for (l = 0; l < (tableau.cells(k).rowSpan - 1); l++) {
tab.splice((k + decal + ((l + 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;
}

Commentaire de dadasurf le 07/08/2007 12:24:18

Juste un petit changement pour tenir compte d'éventuels rowspan qui se suivent: remplacer la ligne:
"...if (tab.slice((k + decal), (k + decal + 1)) == '') {..."
par
"...while (tab.slice((k + decal), (k + decal + 1)) == '') {..."

Commentaire de proffial le 07/08/2007 14:07:22

Bonjour Dadasurf

merci pour ta contribution.

Mais afin que tout le monde en profite au maximum,

tu pourrais créer une nouvelle source en citant celle-ci en référence ?
et ajouter un post avec un lien par la meme occasion :-)

Merci d'avance

@lphonse

Commentaire de dadasurf le 08/08/2007 09:32:53

Code finalisé pour gestion des rowspan:
http://www.javascriptfr.com/code.aspx?ID=43694

Commentaire de poonam le 22/08/2007 08:51:46

J'ai des problèmes avec les <html:select>. En exportant vers excel ca me montre tous les options et non pas l'option selecte

Commentaire de chezeu le 03/10/2008 14:11:42

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>

<body>
<p>&nbsp;</p>
<div id="tableau">
<table width="200" border="1" id="tableau">
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</div>
<div align="center">
  <input name="Submit2" type="button" class="InEo" onClick="exportToExcel(tableau)" value="EXPORTER" />
</div>
<p>&nbsp;</p>
</body>
</html>

Commentaire de phm le 03/10/2008 14:33:05

C'est <div id="tableau"> qui ne va pas.
ça fait doublon avec <table width="200" border="1" id="tableau">

il faut renommer le div

Commentaire de chezeu le 04/10/2008 13:08:49

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!

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales