en effait je veux un code qui ressemble a celui la (voir en bas) mais qui au lieu de lancer EXCEL , me générera en sortie un fichier csv « comma-separated values ».
Voila le code que j'ai trouvé sur ce site :
/*****************************************
@Nom de la fonction : exportToXL
@Description : Rempli une feuille Excel avec le contenu
d'un tableau
@Entrées :
id -> id du tableau à exporter
@Sorties :
En cas d'erreur renvoie false
---------------------------------------------------------*/
function exportToXL(id) {
eSrc=document.all(id) // recherche le composant ayant cet id
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;
}
// on calcule ici le nombre de cellule du tableau.
nb_cellule=eSrc.cells.length
for (var i = 0; i < eSrc.cells.length; i ++)
{
nb_cellule=nb_cellule+eSrc.cells(i).colSpan-1
}
// on en deduit le nombre de colonne de notre fichier excel
cols = Math.ceil(nb_cellule / eSrc.rows.length);
// nombre de cellule qu'il faut "passer " a cause du colspan
nb_colspan=0
// on initialise les valeures des cellules des tableau excel
for (var i = 0; i < eSrc.cells.length; i ++)
{
var c, r;
r = Math.ceil((i+nb_colspan+1) / cols); //lignes excel en cours
c = (i+nb_colspan+1)-((r-1)*cols) //colonnes excel en cours
nb_colspan = nb_colspan+eSrc.cells(i).colSpan-1; // mise a jour de nb_colspan
// gestion du colspan, on effectue un centrage sur plusieurs cellules ...
if (eSrc.cells(i).colSpan > 1 )
for (var j = 0; j < eSrc.cells(i).colSpan; j ++){
oExcel.ActiveSheet.Cells(r,c+j).HorizontalAlignment = 7 ;
// xlCenterAcrossSelection = 7 dans VBA
}
// pour le codage des couleurs j'ai pas trouver comment faire pour que ce soit autaumatique la convertion
// alors elle est manuelle: 336699 c'est du RVB en HEXA leur chiffre sous excel
// j'en ai aucune idée ...
if (eSrc.cells(i).bgColor=='#336699') // gestion des couleurs
for (var j = 0; j < eSrc.cells(i).colSpan; j ++)
oExcel.ActiveSheet.Cells(r,c+j).Interior.Color = 3368601 ;
// mise en forme dans excel celon la classe de la cellule si vous avez un fichier CSS
if (eSrc.cells(i).className=='titre' )
{
oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
oExcel.ActiveSheet.Cells(r,c).Font.Size = 15;
oExcel.ActiveSheet.Cells(r,c).WrapText = false; // pas de retour a la ligne automatique
oExcel.ActiveSheet.Cells(r,c).Font.ColorIndex = 3;
}
if (eSrc.cells(i).className=='sstitre' )
{
oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
oExcel.ActiveSheet.Cells(r,c).Font.Size = 12;
}
//En tête de colonnes
if (eSrc.cells(i).tagName == 'TH') {
oExcel.ActiveSheet.Cells(r,c).Font.Bold = true;
}
// 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;
}
oExcel.ActiveSheet.Cells.EntireColumn.AutoFit; // ajuster la largeur des colonnes sous excel.
oExcelSheet.Application.Visible = true;
}