Exporter un tableau sous excel (ter)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 894 fois - Téléchargée 18 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

Messages postés
2
Date d'inscription
vendredi 27 juillet 2012
Statut
Membre
Dernière intervention
27 juillet 2012

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

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

Bonjour,

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

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

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.