par Maxime Choucroun » 28 Avr 2010 à 16:57
Dans les évidences, il faudra dégraffer la sécurité des ActivesX
Jamais testé sur FireFox
Autre possibilité, mais fatiguante (au moins pour moi) les Office Web Components. Je n'ai jamais réussi à déterminer le périmetre minimum pour son fonctionnement.
Si quelqu'un peut répondre, cela serait sympa...
Par contre, c'est classe !!!
<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>