chezeu
Messages postés21Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 6 juin 2010 4 oct. 2008 à 13:08
Ok Merci ça marche bien avec un tableau statique, mais le probléme c'est que j'ai un tableau dynamique qui est rempli avec les données de la BD, et dans ce cas ci ça ne marche plus. comment faire alors? Merci d'avance!
cs_phm
Messages postés49Date d'inscriptionjeudi 17 janvier 2002StatutMembreDernière intervention23 avril 2009 3 oct. 2008 à 14:33
C'est
qui ne va pas.
ça fait doublon avec <table width="200" border="1" id="tableau">
il faut renommer le div
chezeu
Messages postés21Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 6 juin 2010 3 oct. 2008 à 14:11
Merci pour le code mais la fonction ne s'execute pas chez moi. Qu'est qu'il faut faire? y'a t'il quelque chose à faire sur le tableau. SVP j'attend votre reponse
voici mon code.
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Export</title>
<style type="text/css">
<!--
.InEo {visibility:hidden; font-size: 9px; }
.InEo {visibility:visible; font-size: 9px }
-->
</style>
<SCRIPT type="text/javascript">
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;
}
</SCRIPT>
</head>
</html>
cs_poonam
Messages postés2Date d'inscriptionmercredi 22 août 2007StatutMembreDernière intervention22 août 2007 22 août 2007 à 08:51
J'ai des problèmes avec les <html:select>. En exportant vers excel ca me montre tous les options et non pas l'option selecte
dadasurf
Messages postés3Date d'inscriptionmardi 7 août 2007StatutMembreDernière intervention 8 août 2007 8 août 2007 à 09:32
proffial
Messages postés35Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention23 juillet 2009 7 août 2007 à 14:07
Bonjour Dadasurf
merci pour ta contribution.
Mais afin que tout le monde en profite au maximum,
tu pourrais créer une nouvelle source en citant celle-ci en référence ?
et ajouter un post avec un lien par la meme occasion :-)
Merci d'avance
@lphonse
dadasurf
Messages postés3Date d'inscriptionmardi 7 août 2007StatutMembreDernière intervention 8 août 2007 7 août 2007 à 12:24
Juste un petit changement pour tenir compte d'éventuels rowspan qui se suivent: remplacer la ligne:
"...if (tab.slice((k + decal), (k + decal + 1)) == '') {..."
par
"...while (tab.slice((k + decal), (k + decal + 1)) == '') {..."
dadasurf
Messages postés3Date d'inscriptionmardi 7 août 2007StatutMembreDernière intervention 8 août 2007 7 août 2007 à 11:02
Bonjour,
Après avoir un peu buché sur ce problème de rowspan, je suis parti dans une autre direction consistant à comparer "l'indice réel" dans le tableau à "l'indice fictif" de ce tableau sans tenir compte des colspan et rowspan.
Voici le résultat (en espérant que ça pourra vous aider...):
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 juin 2007 à 12:27
faut jouer avec TonRange.Merge
bvadam
Messages postés2Date d'inscriptionjeudi 21 août 2003StatutMembreDernière intervention19 juin 2007 19 juin 2007 à 10:54
Salut,
vraiment super ce script mais c'est dommage qu'il ne gère pas les rowspan... Quelqu'un sait à quel niveau il faudrait intervenir pour gérer les rowspan ?
Merci
phdj238
Messages postés8Date d'inscriptionjeudi 9 septembre 2004StatutMembreDernière intervention26 avril 2006 30 janv. 2006 à 14:09
Résolu :
Les retours à la ligne à la ligne tag
ou à l'intérieur d'une cellule sont mal traduits. En cherchant la méthode consiste avant remplissage de la cellule de supprimmer les retour chariots \r et de laisser les retours à la ligne \n
if (eSrc.cells(i).innerText.search(/\r\n/) != -1)
{
mystr = eSrc.cells(i).innerText.replace(/\r/g, '');
//Rempli le contenu sans carraige return
oExcel.ActiveSheet.Cells(r,c).Value = mystr;
}
else
{
// Rempli le contenu
oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
}
phdj238
Messages postés8Date d'inscriptionjeudi 9 septembre 2004StatutMembreDernière intervention26 avril 2006 27 janv. 2006 à 18:19
Je souterais supprimmer les tags
ou ou les remplacer par un saut de ligne valide excel avant importation.
cs_eric51
Messages postés1Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention15 décembre 2005 15 déc. 2005 à 00:05
script excellent, mais j'ai tout de même un problème.
Le formatage des cellules est mal géré ds l'exportation.
Peut-être du à des rowspan dans mes tableaux.
Es ce quelqu'un a eu le même prob et a su résoudre le problème?
cs_niahoo
Messages postés2Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention17 mai 2004 17 mai 2004 à 15:25
tres bon sccript mais j'ai trois commentaires a ce propos
1 - Je trouve k'il est assez lent, le meme a peu de chose près développé en VB est 2x plus rapide
2 - Le processus Excel ne s'arrête pas après l'avoir fermé (il faut que je le ferme du gestionnaire des tâches)
3 - Pas de gestion des rowspan
amosc
Messages postés82Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention18 octobre 2005 30 déc. 2003 à 17:09
tt simplement bravo pour l'idée et merci de contribuer à l Edifice du monde OpensOurce by et encore bravo ...
proffial
Messages postés35Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention23 juillet 2009 27 déc. 2003 à 00:16
oula mais c'est génial ;)
en fait tout ca c'est grace a shubacca tout d'abord ...
Et ca fait super plaisir que vous compreniez comment ca marche ;)
il faudrait juste rajouter une ptite capture et hop le tour et joué ;)
sinon moi j'avais fait ca pendant un stage, j'avais le temps, mais pendant les eutdes, c'est pas pareil, enfin bon il faut faire avec ;)
Mais ca va revenir ;)
Bon en tout cas bravo, et je change mon commentaire de ma source pour leur dire de venir ici :)
@lphonse
cs_phm
Messages postés49Date d'inscriptionjeudi 17 janvier 2002StatutMembreDernière intervention23 avril 2009 22 oct. 2003 à 12:06
J'ai fait qq adaptation supplémentaires
que j'ai ajouté sous forme de commentaires
dans la contribution d'alphonse id 16372
normal tout ça c'est grâce à lui.
-suppression de la grille
- récup du CAPTION et insertion d'un titre en ligne 1
- Couleur de fond de la table
A+++
cs_phm
Messages postés49Date d'inscriptionjeudi 17 janvier 2002StatutMembreDernière intervention23 avril 2009 22 oct. 2003 à 11:56
4 oct. 2008 à 13:08
3 oct. 2008 à 14:33
qui ne va pas.
ça fait doublon avec <table width="200" border="1" id="tableau">
il faut renommer le div
3 oct. 2008 à 14:11
voici mon code.
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Export</title>
<style type="text/css">
<!--
.InEo {visibility:hidden; font-size: 9px; }
.InEo {visibility:visible; font-size: 9px }
-->
</style>
<SCRIPT type="text/javascript">
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;
}
</SCRIPT>
</head>
</html>
22 août 2007 à 08:51
8 août 2007 à 09:32
http://www.javascriptfr.com/code.aspx?ID=43694
7 août 2007 à 14:07
merci pour ta contribution.
Mais afin que tout le monde en profite au maximum,
tu pourrais créer une nouvelle source en citant celle-ci en référence ?
et ajouter un post avec un lien par la meme occasion :-)
Merci d'avance
@lphonse
7 août 2007 à 12:24
"...if (tab.slice((k + decal), (k + decal + 1)) == '') {..."
par
"...while (tab.slice((k + decal), (k + decal + 1)) == '') {..."
7 août 2007 à 11:02
Après avoir un peu buché sur ce problème de rowspan, je suis parti dans une autre direction consistant à comparer "l'indice réel" dans le tableau à "l'indice fictif" de ce tableau sans tenir compte des colspan et rowspan.
Voici le résultat (en espérant que ça pourra vous aider...):
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 - 2;
}
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 (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) {
tab.splice((k + decal),1,tableau.cells(k).innerText);
tab.splice((k + decal + 1),(tableau.cells(k).colSpan - 1),'');
decal = decal + tableau.cells(k).colSpan - 1;
} else if (tableau.cells(k).rowSpan > 1) {
tab.splice((k + decal),1,tableau.cells(k).innerText);
for (l = 0; l < (tableau.cells(k).rowSpan - 1); l++) {
tab.splice((k + decal + ((l + 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;
}
19 juin 2007 à 12:27
19 juin 2007 à 10:54
vraiment super ce script mais c'est dommage qu'il ne gère pas les rowspan... Quelqu'un sait à quel niveau il faudrait intervenir pour gérer les rowspan ?
Merci
30 janv. 2006 à 14:09
Les retours à la ligne à la ligne tag
ou à l'intérieur d'une cellule sont mal traduits. En cherchant la méthode consiste avant remplissage de la cellule de supprimmer les retour chariots \r et de laisser les retours à la ligne \n
if (eSrc.cells(i).innerText.search(/\r\n/) != -1)
{
mystr = eSrc.cells(i).innerText.replace(/\r/g, '');
//Rempli le contenu sans carraige return
oExcel.ActiveSheet.Cells(r,c).Value = mystr;
}
else
{
// Rempli le contenu
oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
}
27 janv. 2006 à 18:19
ou ou les remplacer par un saut de ligne valide excel avant importation.
15 déc. 2005 à 00:05
Le formatage des cellules est mal géré ds l'exportation.
Peut-être du à des rowspan dans mes tableaux.
Es ce quelqu'un a eu le même prob et a su résoudre le problème?
17 mai 2004 à 15:25
1 - Je trouve k'il est assez lent, le meme a peu de chose près développé en VB est 2x plus rapide
2 - Le processus Excel ne s'arrête pas après l'avoir fermé (il faut que je le ferme du gestionnaire des tâches)
3 - Pas de gestion des rowspan
30 déc. 2003 à 17:09
27 déc. 2003 à 00:16
en fait tout ca c'est grace a shubacca tout d'abord ...
Et ca fait super plaisir que vous compreniez comment ca marche ;)
il faudrait juste rajouter une ptite capture et hop le tour et joué ;)
sinon moi j'avais fait ca pendant un stage, j'avais le temps, mais pendant les eutdes, c'est pas pareil, enfin bon il faut faire avec ;)
Mais ca va revenir ;)
Bon en tout cas bravo, et je change mon commentaire de ma source pour leur dire de venir ici :)
@lphonse
22 oct. 2003 à 12:06
que j'ai ajouté sous forme de commentaires
dans la contribution d'alphonse id 16372
normal tout ça c'est grâce à lui.
-suppression de la grille
- récup du CAPTION et insertion d'un titre en ligne 1
- Couleur de fond de la table
A+++
22 oct. 2003 à 11:56
oExcel.ActiveSheet.Cells(r,c).Value = eSrc.cells(i).innerText;
// Encadre
myCell=oExcel.ActiveSheet.Cells(r,c);
Encadre(myCell);
}
22 oct. 2003 à 11:44
{
xlToRight=-4161;
xlDown=-4121;
xlNone=-4142;
xlEdgeLeft=7;
xlEdgeTop=8;
xlEdgeBottom=9;
xlEdgeRight=10;
xlContinuous=1;
xlThin=2;
xlAutomatic=-4105;
xlInsideVertical=11;
xlInsideHorizontal=12;
myCell.Borders(xlEdgeLeft).LineStyle = xlContinuous;
myCell.Borders(xlEdgeLeft).Weight = xlThin;
myCell.Borders(xlEdgeLeft).ColorIndex = xlAutomatic;
myCell.Borders(xlEdgeTop).LineStyle = xlContinuous
myCell.Borders(xlEdgeTop).Weight = xlThin
myCell.Borders(xlEdgeTop).ColorIndex = xlAutomatic
myCell.Borders(xlEdgeBottom).LineStyle = xlContinuous
myCell.Borders(xlEdgeBottom).Weight = xlThin
myCell.Borders(xlEdgeBottom).ColorIndex = xlAutomatic
myCell.Borders(xlEdgeRight).LineStyle = xlContinuous
myCell.Borders(xlEdgeRight).Weight = xlThin
myCell.Borders(xlEdgeRight).ColorIndex = xlAutomatic
}