Exporter un tableau sous excel 2000

Contenu du snippet

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


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

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.