1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| function ExportExcelPlan() {
var chaineHtml = "";
var p = window.parent;
var entetes = p.Titre.document.getElementById("zonEttPln").outerHTML;
var extension = "";
//suppression des entetes cachées
entetes = entetes.replace(/<TD.*display ?: ?none.*<\/TD>.*/igm, "");
//suppression des entetes avec les classes NoExcel
entetes = entetes.replace(/<TD.*noexcel.*<\/TD>.*/igm, "");
entetes = entetes.replace(/<TD.*noexcel.*/igm, "");
var contenu = p.Main.document.getElementById("zonCnuPln").outerHTML;
tabTds=document.getElementsByTagName('TD')
nbr=tabTds.length
for(i=0;i<nbr;i++){
if(tabTds[i].className=="noexcel"){
alert("ok"); // pour tester que l'on recupere bien quelquechose.
// A terme,j'aimerais supprimer ce TD
}
contenu = contenu.replace(/<TD.*noexcel.*<\/TD>.*/igm, "");
contenu = contenu.replace(/<a.*noexcel.*<\/a>.*/igm, "");
contenu = contenu.replace(/<TR.*noexcel.*<\/TR>.*/igm, "");
contenu = contenu.replace(/<TD.*noexcel.*/igm, "");
contenu = contenu.replace(/<TR.*noexcel.*/igm, "");
ExportExcel(entetes + contenu);
}
function ExportExcel(chaineHtml) {
// Declaration des variables
var l_CnuXls
// récupération du contenu du tableau
l_CnuXls = chaineHtml
// on allège le code HTML des éléments inutiles
l_CnuXls = l_CnuXls.replace(/id=[^\s>]*/igm, "");
// suppression des bulles d'aide
l_CnuXls = l_CnuXls.replace(/<span[^>(?!class)]*[^>]class="?bulle"?[^>]*>([\s\S](?!<\/span))*[\s\S]<\/span>\s*(<span[^<]*<\/span>)*/igm, "");
l_CnuXls = l_CnuXls.replace(/<div[^>(?!class)]*[^>]class="?bulleAide"?[^>]*>([\s\S](?!<\/div))*[\s\S]<\/div>\s*(<div[^<]*<\/div>)*/igm, "");
l_CnuXls = l_CnuXls.replace(/<div[^>(?!class)]*[^>]class="?MenuLigne"?[^>]*>([\s\S](?!<\/div))*[\s\S]<\/div>\s*(<div[^<]*<\/div>)*/igm, "");
l_CnuXls = l_CnuXls.replace(/<div[^>(?!class)]*[^>]class="?MenuDiv"?[^>]*>([\s\S](?!<\/div))*[\s\S]<\/div>\s*(<div[^<]*<\/div>)*/igm, "");
l_CnuXls = l_CnuXls.replace(/<span[^>(?!class)]*[^>]class="?a_popinfox"?[^>]*>([\s\S](?!<\/span))*[\s\S]<\/span>\s*(<span[^<]*<\/span>)*/igm, "");
// suppression des éléments spécifiés noexcel
l_CnuXls = l_CnuXls.replace(/<TD[^>(?!class)]*[^>]class="?noexcel[^>]*>([\s\S](?!<\/TD))*[\s\S]<\/TD>\s*(<T[DR][^<]*<\/TD>)*/igm, "");
l_CnuXls = l_CnuXls.replace(/<B[^>(?!class)]*[^>]class="?noexcel[^>]*>([\s\S](?!<\/B))*[\s\S]<\/B>\s*(<b[^<]*<\/B>)*/igm, "");
// suppression de la classe identifiant un élément avec bulle d'aide
l_CnuXls = l_CnuXls.replace(/\s*a_popinfox\s*/igm, "");
// suppression des champs cachés
l_CnuXls = l_CnuXls.replace(/<input[^>(?!type)]*[^\/>]type="?hidden"?[^\/>]*>/igm, "");
l_CnuXls = l_CnuXls.replace(/<input[^>(?!type)]*[^>]type="?hidden"?[^>]*>([\s\S](?!<\/input))*[\s\S]<\/input>\s*(<input[^<]*<\/input>)*/igm, "");
//l_TabXls = l_TabXls.replace(/ ?a_popinfox ?/igm, "");
// supression des zone explicitement non Excel
l_CnuXls = l_CnuXls.replace(/<span[^>(?!class)]*[^>]class="?noexcel"?[^>]*>([\s\S](?!<\/span))*[\s\S]<\/span>\s*(<span[^<]*<\/span>)*/igm, "");
//remplacement des mailto par leur texte (mailto KO depuis mis en place de l'export multiple)
l_CnuXls = l_CnuXls.replace(/<a[^>]*href\=["']?\s*mailto\:[^>]*>([^<]*)<\/a>/igm, "$1");
//suppression des boutons
l_CnuXls = l_CnuXls.replace(/<TR[^>]*>[\s\S][^<]*<TD[^>(?!class)]*[^>]class="?SBoutons"?[^>]*>([\s\S](?!<\/TD))*[\s\S]<\/TD>\s*(<TD[^<]*<\/TD>)*<\/TR>/igm, "");
// les images sans texte alternatif sont supprimées
l_CnuXls = l_CnuXls.replace(/<IMG([^>](?!alt2=))*>/igm, "");
// les images suivies directement d'une texte sont remplacées par leur texte alternatif suivi de " : "
l_CnuXls = l_CnuXls.replace(/<IMG([\s\S](?!alt2=))*[\s\S]alt2="([^"]*)"[^>]*>([a-zA-Z0-9])/igm, "$2 : $3");
// les autres icônes par leur texte alternatif
l_CnuXls = l_CnuXls.replace(/<IMG([\s\S](?!alt2=))*[\s\S]alt2="([^"]*)"[^>]*>/igm, "$2");
// on ajoute des bordures blanches pour séparer les cases
l_CnuXls = l_CnuXls.replace(/<TABLE([^>]*)>/ig, "<TABLE $1 border=\"1\" bordercolor=\"white\" >")
l_CnuXls = l_CnuXls.replace(/onmouse[a-zA-Z]*=[^\s>]*/igm, "");
l_CnuXls = l_CnuXls.replace(/onclick=[^\s>]*/igm, "");
l_CnuXls = l_CnuXls.replace(/width=[^\s>]*/igm, "");
l_CnuXls = l_CnuXls.replace(/align=[^\s>]*/igm, "");
l_CnuXls = l_CnuXls.replace(/nowrap/igm, "");
l_CnuXls = l_CnuXls.replace(/<()cmtrad>/igm, "");
l_CnuXls = l_CnuXls.replace(/<\/cmtrad>/igm, "");
l_CnuXls = l_CnuXls.replace(/<\/\/cmtrad>/igm, "");
l_CnuXls = l_CnuXls.replace(/[\s]+/igm," ");
// on concatène le titre et le contenu et on stocke le tout dans le //formulaire
var Frl_Xls = window.Frl_Xls || window.parent.Main.Frl_Xls;
Frl_Xls.TabXls.value = l_CnuXls;
//on envoie les données à XprXls.asp
Frl_Xls.submit();
} |