Exporter un tableau sous excel 2000

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 480 fois - Téléchargée 28 fois

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

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 juin 2007

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.
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

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
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

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!
Messages postés
2
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
8 octobre 2006

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.
Messages postés
94
Date d'inscription
dimanche 29 septembre 2002
Statut
Membre
Dernière intervention
26 août 2009

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
Afficher les 32 commentaires

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.