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 !

EXPORTER UN TABLEAU SOUS EXCEL 2000


Information sur la source

Catégorie :Divers Niveau : Initié Date de création : 23/12/2002 Date de mise à jour : 27/12/2002 12:34:03 Vu : 8 823

Note :
7,2 / 10 - par 5 personnes
7,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Cette fonction ouvre Excel sur votre poste avec le contenu complet du tableau entré en paramètre.
La fonction peut s'utiliser tel quel dans un fichier HTML.
Il est toujours possible de faire quelques modifications afin d'ajouter un peu de couleurs et de créer des bordures.  
 

Source

  • <HTML>
  • <HEAD>
  • <TITLE>
  • </TITLE>
  • </HEAD>
  • <SCRIPT LANGUAGE=javascript>
  • <!--
  • /*---------------------------------------------------------
  • Nom de la fonction : exportToXL
  • Description : Rempli une feuille Excel avec le contenu
  • d'un tableau
  • Entrées :
  • eSrc -> tableau à exporter
  • Sorties :
  • En cas d'erreur renvoie false
  • ---------------------------------------------------------*/
  • function exportToXL(eSrc) {
  • 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;
  • }
  • cols = Math.ceil(eSrc.cells.length / eSrc.rows.length);
  • for (var i = 0; i < eSrc.cells.length; i ++)
  • {
  • var c, r;
  • r = Math.ceil((i+1) / cols); //lignes en cours
  • c = (i+1)-((r-1)*cols) //colonnes en cours
  • //En tête de colonnes
  • if (eSrc.cells(i).tagName == 'TH') {
  • oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
  • oExcel.ActiveSheet.Cells(r,c).Interior.Color = 14474460; //gris
  • }
  • // 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;
  • }
  • oExcelSheet.Application.Visible = true;
  • }
  • //-->
  • </SCRIPT>
  • <BODY>
  • <FORM id=oForm>
  • <TABLE id=idTable cols=3 name=idTable>
  • <TR><TH>Titre 1</TH><TH>Titre 2</TH><TH>Titre 3</TH></TR>
  • <TR><TD>Cell 1</TD><TD>Cell 5</TD><TD>Cell 5</TD></TR>
  • <TR><TD><b>Cell 2</b></TD><TD>Cell 6</TD><TD>Cell 5</TD></TR>
  • <TR><TD>Cell 3</TD><TD>Cell 7</TD><TD>Cell 5</TD></TR>
  • <TR><TD>Cell 4</TD></TR>
  • </TABLE>
  • </FORM>
  • <INPUT type="button" value="Button" id=button1 name=button1 onCLick="exportToXL(oForm.all('idTable'))">
  • </BODY>
  • </HTML>
<HTML>
<HEAD>
<TITLE>

</TITLE>
</HEAD>
<SCRIPT LANGUAGE=javascript>
<!--
/*---------------------------------------------------------
	Nom de la fonction : exportToXL
	Description : Rempli une feuille Excel avec le contenu 
		d'un tableau
	Entrées :
		eSrc -> tableau à exporter
	Sorties :
		En cas d'erreur renvoie false
---------------------------------------------------------*/
function exportToXL(eSrc) {

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

cols = Math.ceil(eSrc.cells.length / eSrc.rows.length);
		
for (var i = 0; i < eSrc.cells.length; i ++)
{
	var c, r;
	r = Math.ceil((i+1) / cols);	//lignes en cours
	c = (i+1)-((r-1)*cols)		//colonnes en cours
			
	//En tête de colonnes
	if (eSrc.cells(i).tagName == 'TH') {	
		oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
		oExcel.ActiveSheet.Cells(r,c).Interior.Color = 14474460; //gris
	}
			
	// 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;
}
oExcelSheet.Application.Visible = true;

}
//-->
</SCRIPT>


<BODY>
<FORM id=oForm>
<TABLE id=idTable cols=3 name=idTable>
	<TR><TH>Titre 1</TH><TH>Titre 2</TH><TH>Titre 3</TH></TR>
	<TR><TD>Cell 1</TD><TD>Cell 5</TD><TD>Cell 5</TD></TR>
	<TR><TD><b>Cell 2</b></TD><TD>Cell 6</TD><TD>Cell 5</TD></TR>
	<TR><TD>Cell 3</TD><TD>Cell 7</TD><TD>Cell 5</TD></TR>
	<TR><TD>Cell 4</TD></TR>
</TABLE>
</FORM>
<INPUT type="button" value="Button" id=button1 name=button1 onCLick="exportToXL(oForm.all('idTable'))">
</BODY>
</HTML>
   

Conclusion

Petite remarque bête. Mais on instancie ici un ActiveX. Donc pour que ce script fonctionne, il faut activer les contrôles ActiveX dans les paramêtres de securité.
Pour ceux qui ont Excel 2000 sur leur poste, aller sur c:\program files\Microsoft Office\Office\1036\Msowcvba.chm. Vous y trouverez l'aide des composants Microsoft Office. Pour pourrez ainsi améliorer la fonction.
 

Commentaires et avis

signaler à un administrateur
Commentaire de proffial le 27/08/2003 10:37:52

Bonjour,

tout d'abord, bravo pour cette source, elle marche pas mal du tout,

juste pour signaler qu'il peut y avoir des petits pb lors de l'exportation vers excel

ainsi si le tableau est comme ceci:

&lt;table id=idTable cols=6  name=idTable&gt;

&lt;TR&gt;&lt;TH&gt;Titre 1&lt;/TH&gt;&lt;TH&gt;Titre 2&lt;/TH&gt;&lt;TH&gt;Titre 3&lt;/TH&gt;&lt;TH&gt;Titre 4&lt;/TH&gt;&lt;TH&gt;Titre 5&lt;/TH&gt;&lt;TH&gt;Titre 6&lt;/TH&gt;&lt;/TR&gt;

  
  &lt;TR&gt;&lt;TD&gt;Cell 1&lt;/TD&gt;&lt;TD &gt;Cell 5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Cell 1&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;/TR&gt;
  
  &lt;TR&gt;&lt;TD&gt;Cell 3&lt;/TD&gt;&lt;TD&gt;Cell 7&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;TD&gt;&lt;b&gt;Cell 2&lt;/b&gt;&lt;/TD&gt;&lt;TD&gt;Cell 6&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;/TR&gt;
  &lt;TR&gt;&lt;TD&gt;Cell 4&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;

le resultat sort sur 5 colonnes sous Excel
pour pallier a ce problème il suffit de mettre des &lt;td&gt;&lt;/td&gt; sur la derniere ligne ...



la solution:
&lt;table width="100%" border=1 bordercolor="#FFCC66" bgcolor="#336699"  id=idTable cols=6  name=idTable&gt;

&lt;TR&gt;&lt;TH&gt;Titre 1&lt;/TH&gt;&lt;TH&gt;Titre 2&lt;/TH&gt;&lt;TH&gt;Titre 3&lt;/TH&gt;&lt;TH&gt;Titre 4&lt;/TH&gt;&lt;TH&gt;Titre 5&lt;/TH&gt;&lt;TH&gt;Titre 6&lt;/TH&gt;&lt;/TR&gt;

  
  &lt;TR&gt;&lt;TD&gt;Cell 1&lt;/TD&gt;&lt;TD &gt;Cell 5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Cell 1&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;/TR&gt;
  
  &lt;TR&gt;&lt;TD&gt;Cell 3&lt;/TD&gt;&lt;TD&gt;Cell 7&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;TD&gt;&lt;b&gt;Cell 2&lt;/b&gt;&lt;/TD&gt;&lt;TD&gt;Cell 6&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;/TR&gt;
  &lt;TR&gt;&lt;TD&gt;Cell 4&lt;/TD&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/TR&gt;
&lt;/TABLE&gt;



de meme, le mot clé "colspam" n'est pas pris en compte mais on peut ruser de la maniere suivante

&lt;table id=idTable cols=6  name=idTable&gt;

&lt;TR&gt;&lt;TH&gt;Titre 1&lt;/TH&gt;&lt;TH&gt;Titre 2&lt;/TH&gt;&lt;TH&gt;Titre 3&lt;/TH&gt;&lt;TH&gt;Titre 4&lt;/TH&gt;&lt;TH&gt;Titre 5&lt;/TH&gt;&lt;TH&gt;Titre 6&lt;/TH&gt;&lt;/TR&gt;

  
  &lt;TR&gt;&lt;TD&gt;Cell 1&lt;/TD&gt;&lt;TD &gt;Cell 5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Cell 1&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;/TR&gt;
  &lt;TR&gt;&lt;TD colspan="6" &gt;&lt;b&gt;Cell 2&lt;/b&gt;&lt;/TD&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/TR&gt;
  &lt;TR&gt;&lt;TD&gt;Cell 3&lt;/TD&gt;&lt;TD&gt;Cell 7&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;TD&gt;&lt;b&gt;Cell 2&lt;/b&gt;&lt;/TD&gt;&lt;TD&gt;Cell 6&lt;/TD&gt;&lt;TD&gt;Cell 5&lt;/TD&gt;&lt;/TR&gt;
  &lt;TR&gt;&lt;TD&gt;Cell 4&lt;/TD&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/TR&gt;
&lt;/TABLE&gt;

&lt;/FORM&gt;

Compte tenu de ces 2 points, je t'ai mis 8 car elle est pas encore au top, mais elle est deja très très bien ;)
Et oui, on peut toujours mieux faire ...

En tout cas, je te remercie pour cette source, elle est bien pratique, et me permet de faire des trucs super sympas ...

En plus le fait de pouvoir faire de la mise en forme sous excel, le pied ...
rah j'aurais du te mettre 9 , j'ai été un peu sevère ;)

J'espere que tu ne m'en tiendra pas rigueur ...

@ plus

@lph


signaler à un administrateur
Commentaire de Jaja76 le 11/09/2003 17:28:35

Super !
Le seul problème que j'ai rencontré, c'est que Excel interprette les données en entrée.
Par exemple, si j'ai un numéro de SIRET (14 chiffres), il veut absolument me le mettre sous la forme 1,234567E12.
Y a-t-il un moyen d'obliger Excel à prendre cela comme de l'apha ?

signaler à un administrateur
Commentaire de proffial le 11/09/2003 22:22:56

il suffit de rajouter un guillemet ' de la touche 4 avant pour que excel gere cela en alpha...

au fait au passage, j'ai amélioré la source de shubacca elle est dispo sur:

http://www.javascriptfr.com/article.aspx?Val=731

bonne continuation ;)

signaler à un administrateur
Commentaire de carlosa le 11/05/2004 09:54:28

J'ai un problème avec mon code. J'ai une application avec des pages html et j'ai une function qui export les donnes dans excel... mais les dates ne sont pas bien interprète.... il inverse le mois et le jour....
Voila le code
------------------------------------------------------------
var oExcel;   // Open Excel
var oExcelSheet;   // Sheet Excel
var oWkBooks;
// COPY THE CURRENT PAGE
textRange = document.body.createTextRange();
textRange.moveToElementText(divMain);
textRange.execCommand("Copy");
// OPEN EXCEL
oExcel = new ActiveXObject('Excel.Application');
oWkBooks = oExcel.Workbooks.Add;
oExcelSheet = oWkBooks.Worksheets(1);
oExcelSheet.Application.Visible = true;

oExcelSheet.Activate();

oExcel.ActiveSheet.Range('A1').Select;
oExcel.ActiveSheet.PasteSpecial(0,false,false);


oExcel.ActiveSheet.Cells.EntireColumn.AutoFit;
oExcel.ActiveSheet.Range('A1').Select;

signaler à un administrateur
Commentaire de proffial le 12/05/2004 00:36:49

Bonjour carlosa,

le problème vient du fait qu'Excel ne stoke pas les dates au meme format que la plupart des systemes de base de donnée.

il faut donc reecrire au format Excel les dates dans le tableau de la page WEB
en gros il faut que les dates soient bien affichées: jour / mois / année ....

Et normalement ca marche nikel ;)

signaler à un administrateur
Commentaire de aminix9 le 09/03/2005 01:14:18

cher shubacca je tiens à te remercier car ton code m est venu d une grande aide!!

j ai voulu t envoyer un mail pour te remercier mais j ai pa trouver de mail!!
merci et a+ :-)

signaler à un administrateur
Commentaire de jlassira05 le 09/06/2005 15:53:52

Je viens de tester ce script sur ma page asp mais ca marche pas !! pourtant je l'ia teste sur un tableau tres simple!!!

signaler à un administrateur
Commentaire de proffial le 09/06/2005 17:37:05

Bonjour,

Question:
as tu excel 2000, XP, 2003 ?
utilise tu internet explorer ?
as tu activé les contrôles ActiveX dans les paramêtres de securité de internet explorer ?
as tu fais un copier coller de la source dans un fichier HTML ?
Cela donne quoi ?

Alphonse

PS: après tu peux aller voir la source http://www.javascriptfr.com/article.aspx?Val=731 qui fait la meme chose avec deux trois trucs en plus...

signaler à un administrateur
Commentaire de jlassira05 le 10/06/2005 08:53:58

Bonjour,

alors j'utilise Excel 2003 sous XP et IE6 SP2 comme navigateur !
le probleme c'est que j'ai un autre script qui fait la même chose et ca marche sans probleme !! mais votre script ne fait rien et une erreur javascript apparait " erreur dans l apage " ou quelque chose comme ca !

est ce que la structure du document HTML même si'il est mal formé a un impact sutr le fonctionnement de se script!! en effet j'ai testé le script sur une page de test simple et ca fonctionne mais sur la miene NON :)! bizarre!

signaler à un administrateur
Commentaire de proffial le 10/06/2005 10:11:26

Si la page de test fonctionne correctement, et que la tienne ne marche pas, c'est que tu as une erreur de codage ...

regarde que les id et les names correspondent bien :
<FORM id=oForm>
<TABLE id=idTable cols=3 name=idTable>
<INPUT type="button" value="Button" id=button1 name=button1 onCLick="exportToXL(oForm.all('idTable'))">

tu peux m'envoyer ton html, ou html généré
en cliquant sur mon pseudo et en m'envoyant un message privé
si tu veux je regarderai rapidement ;-)

Alphonse

signaler à un administrateur
Commentaire de jlassira05 le 14/06/2005 10:24:20

bonjour,

je n'arrive pas a comprenndre pourquoi le document excel generé chez moi est du n'importe quoi!! pourtant ma table html est bien construite !! en plus pas de couleurs respecté ! tout est blanc !

j'ai utilisé exactement le meme script sans modifs!!
aidez moi svp!

signaler à un administrateur
Commentaire de jlassira05 le 14/06/2005 11:45:40

je vous envoie ci-joint ma page html ; j'ai pris le soin de remplacer mon texte ( issue d"un flux xml au fait ) par n'importe quoi! et voyez la difference entre le tableau genere en html et son equivalent en excel!

<code>
<HTML>
<HEAD>

<LINK REL="stylesheet" TYPE="text/css" HREF="styles.css">
<TITLE>

</TITLE>
</HEAD>

<script LANGUAGE=javascript>
<!--
/*---------------------------------------------------------
  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' )
  for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
  {
  oExcel.ActiveSheet.Cells(r,c+j).Font.Bold = true;
  oExcel.ActiveSheet.Cells(r,c+j).Font.Size = 15;
  oExcel.ActiveSheet.Cells(r,c+j).WrapText = false; // pas de retour a la ligne automatique
  oExcel.ActiveSheet.Cells(r,c+j).Font.ColorIndex = 3;
  oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = 125478 ;
  }
  
if (eSrc.cells(i).className=='sstitre' )
for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
  {
  oExcel.ActiveSheet.Cells(r,c+j).Font.Bold = true;
  oExcel.ActiveSheet.Cells(r,c+j).Font.Size = 12;
  oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = 564125 ;
  }
  
  
  
  
  
  
  
        
//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>

</head>

<BODY>

<table id = table width="100%" cellpadding="0" cellspacing="0" border="0" >

<tr>
<td>
<table id = tablesmalltop class="LISTE" width="100%" border="0" cellspacing="1" cellpadding="2">
<tr>
<td class="LTITCOL" >&nbsp;</td>
<td class="LTITCOL" >sddfgdgf</td>
<td class="LTITCOL" >fgdfgdgdg</td>
<td class="LTITCOL" >dfgdfgdgdfg</td>
<td class="LTITCOL" >dfgdfgdfgdfg</td>
<td class="LTITCOL" colspan="4">sdfgsdfgdgdfgdfgdgdgfdfgdfgd</td>
<td class="LTITCOL" colspan="4">sdgdfgdfgdfdfgdgdgfgdgdfgdgsdfgdsfg</td>
<!--<td class="LTITCOL" colspan="2"><%=lstr_champ2(13) %></td>-->
</tr>
<tr>
<td class="LTITCOL" >&nbsp;</td>
<td class="LTITCOL" >&nbsp;</td>
<td class="LTITCOL" >&nbsp;</td>
<td class="LTITCOL" >dfgdfgd&nbsp;</td>
<td class="LTITCOL" >&nbsp;</td>
<td class="LTITCOL" >dfgdsfg</td>
<td class="LTITCOL" >fgdfgdfg</td>
<td class="LTITCOL" >dfgdfgdfgdfgdfgdf</td>
<td class="LTITCOL" >dfgdfg</td>
<td class="LTITCOL" >zetgfezry</td>
<td class="LTITCOL" >srytr</td>
<td class="LTITCOL" >nqsdfjsdo </td>
<td class="LTITCOL" > ood^pàgfe,g</td>
<!--<td class="LTITCOL" ><%=lstr_champ2(8)%></td>
<td class="LTITCOL" ><%=lstr_champ2(9)%></td> -->
</tr>

<tr>
<td class="FTITLIGU" nowrap>ghgfnjghjgf</td>
<td class="FDATAU">fghfhh</td>
<!-- Cours  -->
<td class="FDATAU">ghfh</td>
<td class="FDATAU">gfhfh</td>
<td class="FDATAU">tu</td>
<td class="FDATAU">tut</td>
<td class="FDATAU">ut</td>
<td class="FDATAU">tu</td>
<td class="FDATAU">tyu</td>
<td class="FDATAU">tyuty</td>
<td class="FDATAU">gyjy</td>
<td class="FDATAU">565468</td>
<td class="FDATAU">erzer</td>
<!-- Pondération -->
<!--
<%if lObj_Xml.item(i).selectSingleNode("PONDTOPSMALL").text="" then%>
<td class="<%=CouleurAlternance%>">&nbsp;</td>
<%else%>
<td class="<%=CouleurAlternance%>"><%=round(getprecision(2,lObj_Xml.item(i).selectSingleNode("PONDTOPSMALL").text)*100,0)%>%</td>
<%end if%>
<%if lObj_Xml.item(i).selectSingleNode("PONDSNDMARCHE").text="" then%>
<td class="<%=CouleurAlternance%>">&nbsp;</td>
<%else%>
<td class="<%=CouleurAlternance%>"><%=round(getprecision(2,lObj_Xml.item(i).selectSingleNode("PONDSNDMARCHE").text)*100,0)%>%</td>
<%end if%>-->
</tr>


<!-- Rupture -->
<tr class="LRUPTURE"><td colspan="15">&nbsp;</td></tr>

<tr>
<td class="FTITLIGU" colspan="4">hjgh</td>
<td class="FDATAU" >&nbsp;</td>
<td class="FDATAU" >&nbsp;</td>
<td class="FDATAU" >jhj</td>
<td class="FDATAU" >hjhj</td>
<td class="FDATAU" >122</td>
<td class="FDATAU" >&nbsp;--</td>
<td class="FDATAU" >97</td>
<td class="FDATAU" >yujku</td>
<td class="FDATAU" >488</td>
<!--<td class="<%=CouleurAlternance%>" >&nbsp;</td>
<td class="<%=CouleurAlternance%>" >&nbsp;</td>-->
</tr>






</table>
<!-- Fin Tableau De Navigation -->
</td>
</tr>


</table>

<INPUT type="button" value="exporter vers excel" id=button1 name=button1 onCLick="exportToXL('tablesmalltop')">
</BODY>

</HTML>

</CODE>

signaler à un administrateur
Commentaire de proffial le 14/06/2005 12:00:50

Simple:
il faut remplacer :
<!-- Rupture  -->
<tr class="LRUPTURE"><td colspan="15">&nbsp;</td></tr>

par
<!-- Rupture colspan="13" -->
<tr class="LRUPTURE"><td colspan="13">&nbsp;</td></tr>

Et après ca marche nikel ...
tu as 13 cellule par ligne et pas 15 ...
Erreur de HTML ;-)

Bonne continuation.

Alphonse

signaler à un administrateur
Commentaire de jlassira05 le 14/06/2005 12:54:44

tu l'as vraiement testé?

signaler à un administrateur
Commentaire de proffial le 14/06/2005 13:10:04

A ton avis ??
ca m'a pris 5 min pour faire un copier coller,
5min pour comprendre ce qui n'allait pas
30 sec pour  changer la valeur et tester ..
aller zouh je viens meme de retester sur un autre PC, car ta question me fait douter,
Re 30 sec de perdue et CA MARCHE !!!

Be happy, et maintenant t'as plus qu'a mettre 10 a la source ;-)

Alphonse

signaler à un administrateur
Commentaire de jlassira05 le 14/06/2005 13:10:22

je viens de le faire !! l'affichage laisse a desirer!!pas de couleurs!! pourquoi?

signaler à un administrateur
Commentaire de jlassira05 le 14/06/2005 13:18:20

au fait lorsque vous avez effectue le test quel id avez vous passé comme parametre? parce qu'il ya 2 table: table et tablesmalltop ! pour le premier id ca marche pas pour le second ca marche ( mais avec le probleme d'affichage)! dosi ej en deduire qu'il faut une seule table et pas des tables imbriquées pour que ca marche!!

merci

signaler à un administrateur
Commentaire de proffial le 14/06/2005 13:50:21

alors, Non, on ne peut pas avoir de table imbriquées (j'ai jamais fait le test, mais normalement ca marche pas ... )
Deja j'imagine la galere avec des colspam de partout ...
Si tu te sens de le faire, je serais curieux de voir le résultat ;-)

donc tablesmalltop  marche très bien...
Il faut juste mettre le colspam a 13 ...

maintenant pour la mise en page, les couleurs et autres:

il faut modifier le code ici :



// mise en forme dans excel celon la classe de la cellule si vous avez un fichier CSS



if (eSrc.cells(i).className=='titre' )
  for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
  {
  oExcel.ActiveSheet.Cells(r,c+j).Font.Bold = true;
  oExcel.ActiveSheet.Cells(r,c+j).Font.Size = 15;
  oExcel.ActiveSheet.Cells(r,c+j).WrapText = false; // pas de retour a la ligne automatique
  oExcel.ActiveSheet.Cells(r,c+j).Font.ColorIndex = 3;
  oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = 125478 ;
  }


et Ajouter ceci par exemple :


if (eSrc.cells(i).className=='FDATAU' )
  for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
  {
  oExcel.ActiveSheet.Cells(r,c+j).Font.Bold = true;
  oExcel.ActiveSheet.Cells(r,c+j).Font.Size = 15;
  oExcel.ActiveSheet.Cells(r,c+j).WrapText = false; // pas de retour a la ligne automatique
  oExcel.ActiveSheet.Cells(r,c+j).Font.ColorIndex = 3;
  oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = 125478 ;
  }

Bref, on reprend ici tout les styles definis, et on défini celui que l'on veut donner dans excel ...
donc ici il faut rajouter des conditions pour les styles:
LTITCOL FTITLIGU ... Bref je pense que t'as maintenant compris comment ca marche.

Si tu veux les valeurs a mettre pour le style, tu vas dans excel, tu enregistre une macro en mettant le style que tu veux, tu va regarder le VB généré, et apres tu adapte les valeures ...

Je sais que quelqu'un a encore fait evoluer la source après moi ....
Je te laisse chercher un peu ...

Maintenant je crois que l'on ne peut pas t'aider beaucoup plus ...

Alphonse

signaler à un administrateur
Commentaire de bibi59 le 14/06/2005 17:13:35

Salut,

J'ai testé le code mais je n'arrive pas a le faire marcher sous firefox, sous IE c'est bon. J'ai pourtant téléchargé et installé le plug in ActiveX

signaler à un administrateur
Commentaire de bibi59 le 14/06/2005 17:15:31


Salut,
je n'arrive pas a utiliser les ActiveX sous firefox, sous IE j'arrive à envoyer des données sur Excel mais pas ave firefox. J'ai pourtant téléchargé et installé le plugin ActiveX. Quelqu'un aurait un élément de réponse?

signaler à un administrateur
Commentaire de hdh le 18/06/2005 02:24:46

Hello !
J'essaye de faire fonctionner la source et étrangement cela fonctionne en local mais pas en distant !!
Quelqu'un aurait il une idée ??????
J'ai une erreur javascript ligne 26 car 1 (de ce code source)
Erreur un composant ActivX ne peut creer un objet
code 0
J'ai IE6 029 et la ferme intention d'utiliser ce script malgré ces mauvais début ;-)

Donc j'implore l'aide de la communauté dev : pleeeease aidez moi !

au plaisir de vous lire,

H

signaler à un administrateur
Commentaire de proffial le 18/06/2005 20:05:02

Si cela marche en local et pas en distant, c'est un problème de configuration de ton IE
Tu vas dans outil> option internet > sécurité > après tu selectionne soit internet , soit site de confiance soit ... et tu active tout ce qui va bien ;-)

J'espere que ca va t'aider ;-)

Alphonse

signaler à un administrateur
Commentaire de hdh le 19/06/2005 08:02:39

Hello,
Grand merci pour ton aide !!
c'est en effet tout à fait cela : j'ai modifié uniquement la ligne
"controles d'initialisation et de scripts d'activX non marqués comme sécurisé"
(outil> option internet > sécurité > internet) qui était en "désactivé" et je l'ai
fait passer en  "demander"... et tout booom ;-)

Histoire que mes internautes n'aient pas ce genre de mésaventure je voudrais rajouter
un bout de script :
- ne montrer cette fonctionalité qu'aux personnes qui sont sous IE (vous me confirmez ??
ca marche pas sous firefox à cause des activx..et le plugin n'a pas l'air top fiable)  ??
- mettre une alert  windows avec tes explications si erreur javascript !

autant le premier je vois sans soucis autant le reperage de l'erreur javascript je suis
plus en soucis ! auriez-vous des pistes à me proposer ??

encore merci pr ton coup de main !

a+

H

signaler à un administrateur
Commentaire de hdh le 19/06/2005 10:10:16

Hello,
Pour ce qui est de la gestion des erreurs j'ai bidouillé un truc mais ne suis pas très content car c'est vraiment pas propre... mais ca a le mérite de marcher (au moins chez moi)

Il suffit de placer ce code au tout début du javascript (avant ttes les autres fonctions et autres)

zen pensez quoi vous qui savez coder ??????????????????

onerror = report;
function report(message,url,line)
{
typeror =/ctiv/; //pour repérer seulement les aCTIVx
// alert(typeror.test(message));
if(typeror.test(message))
     { alert('Error (du type activx): ' + message + ' at line ' + line + ' in ' + url);}
else
   { alert('Error (type autre que activx): ' + message + ' at line ' + line + ' in ' + url);}
}

signaler à un administrateur
Commentaire de proffial le 19/06/2005 11:17:30

Euh a vrai dire je comprend pas tout ;-)
Mais ca marche ?
Parce que si ca marche c'est ce que tu voulais non ? ;-)

Alphonse

signaler à un administrateur
Commentaire de hdh le 19/06/2005 14:13:34

Bin ouais ca marche chez moi... et à distance... de là à dire que ca marchera pour tout le monde !!
en fait ce dernier bout de code permet d'afficher -en cas de pb- aux internautes le fait qu'ils n'ont pas autorisé les activX...  (Error (du type activx)).

Maintenant il faudrait que je me penche sur les cas de firefox... bcs firefox et activX ne font pas bon ménage... tu confirmes ??
a+
H

signaler à un administrateur
Commentaire de jlassira05 le 20/06/2005 09:29:19

bonjour,

le script marche bien a vrai dire et chacun pourra le modifier selon son choix graphique et tout ça!

mais j'ai un petit soucis...y a t il un moyen pour que via une page actuelle on affiche le contenu d'un tableau présent dans une page précédente ? ( sorte de page pop up de confirmation ou equivalent) ...comment afficher le resultat sans le reinjecter comme hidden dans cette pop up ?

merci

signaler à un administrateur
Commentaire de SebOfBorg le 22/08/2006 18:13:49

Bonjour a tous,

Auriez vous quelque chose dans le même genre qui fonctionne en JAVA ?
J'essai en java de créer des fichiers Excel a partir d'une base de données.

En fait je suis un dev VB qui essai de se reconvertir en Java et je refais mes progs de VB a Java.
Mais pour le moment les Java et Excel ne sont pas bien documentés ou payant !!

A plus
Merci d'avance

signaler à un administrateur
Commentaire de aityahia le 09/10/2006 13:22:33

bonjours a tous bon j'ai essayé le code il fonction tres bien mais je tien a  signaler qu'il ne fonctionne pas sous fireFox et que lorsque on as des feuille ColdFusion sa ne fonctionne pas je les testé avec un site ColdFusion les active ne peut pas crés le l'objet activeX.

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

Au poil, c'est parfait.
note:9.

Juste une question: Je ne peut pas ouvrir excel tant que la page html n'est pas fermé.
Est-ce la cas chez vous aussi.

Faut-il detruire le oExcel = new ActiveXObject('Excel.Application'); ???
Et si oui comment fait-on??

Merci d'avance et bravo!

signaler à un administrateur
Commentaire de David78390 le 11/12/2006 15:20:09

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 estait ouverte.

Il suffit de rajouter
// fermeture de EXCEL sinon supprimer les deux lignes
oExcel.WorkBooks.Close;
oExcel.Quit();
oExcel=null;
avant le
}
//-->
</SCRIPT>

Voila Ciao

signaler à un administrateur
Commentaire de edevouge le 08/06/2007 11:12:32

Ce script est bien, mais très long lorsqu'il y a plusieurs centaines de lignes de données. Malheureusement je ne pense pas qu'il existe une méthode plus rapide du moins avec JavaScript. C'est assez regrettable sachant q'un copier/coller de la table dans excel est 100 fois plus rapide.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,296 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é.