Exporter un tableau sous excel (ter)

4/5 (5 avis)

Snippet vu 14 070 fois - Téléchargée 20 fois

Contenu du snippet

Voici une autre solution envisagée (par rapport à celle décrite dans http://www.javascriptfr.com/code.aspx?ID=17140) qui prend en compte les rowspan et colspan.
J'ai essayé de la tester dans le plus de cas possibles et ça a l'air de fonctionner...

Source / Exemple :


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

A voir également

Ajouter un commentaire Commentaires
zelaifi
Messages postés
1
Date d'inscription
vendredi 27 juillet 2012
Statut
Membre
Dernière intervention
27 juillet 2012

27 juil. 2012 à 16:34
bonjour,
Moi aussi je voudrai quelque indication sur les façon d'introduire ton script dans mon code
Merci
lililalalulu
Messages postés
2
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
26 mai 2010

26 mai 2010 à 10:10
moi aussi je voudrai quelque indication
nellsy
Messages postés
7
Date d'inscription
mercredi 11 avril 2001
Statut
Membre
Dernière intervention
27 juin 2009

27 juin 2009 à 14:23
Bonjour,

A savoir que pour pouvoir utiliser cette fonction, il te faut excel installé sur la machine...
slnk
Messages postés
1
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
25 février 2009

25 févr. 2009 à 15:21
bonjour,
pourrais-tu donner des indications sur la façon d'utiliser ton script?
merci d'avance.
gwivv
Messages postés
2
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
25 juin 2008

25 juin 2008 à 10:04
Bien vu !! J'ai testé et ton code marche très bien avec les colspan et rowspan de mes tableaux !!

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.