Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 12h48   #21
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Pour commencer, je dois supprimer les balises TD qui contiennent la classe suppr. Je ne dois pas faire de display:none car je fais un export excel.

Ensuite, je suis d'accord avec toi bovino et je ne prend pas mal tes remarques au contraire tu essaies de m'aider. Je suis nouveau sur ce projet et vu que je n'ai jamais fait d'asp, je cherche les solutions sur le web et j'adapte pour faire fonctionner l'appli. Je n'ai pas vraiment le temps de tous relire car tout doit etre livré vendredi midi.

Ce n'est pas moi qui ai mis en place ce code mais j'essai de l'arranger pour faire fonctionner l'export. Les replaces permettent de supprimer les choses que l'on ne veut pas côté excel. On cherche à supprimer les balises contenant le noexcel.
je vous montre le code :
Code :
<a class="Lien" href="#" onclick="ExportExcelPlan();return false;"><cmtrad>Écran</cmtrad></a>
Ce code est contenu dans un fichier asp qui a un include d'un fichier js qui contient le code suivant
Code :
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();
}
J'espere que vous comprendrez quelque chose à tous ça.
J'ai pensé a parcourir le document et enlever les balises td contenant la classe noexcel. Le problème est que le code que vous me fournissez ne marche il attend un objet dans l'appel lors du clic.

Merci
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h51   #22
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
Il te manque un "}" pour fermer la boucle for comme je me souciais plus haut.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h08   #23
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Ca fonctionne je recupère bien quelque chose Merci andry.aime.
il faudrait que je supprime cette élément et qu'a la fin je reaffecte ma valeur à sans les TD à contenu.

Pour supprimer je dois utiliser un deleteCell je crois mais pour reaffecter je fais comment ?
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h15   #24
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
insertCell ?
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h15   #25
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Je suis bête je fais mon traitement avant de l'affecter à contenu.
Par contre maintenant je voudrais faire différement, il faudrait que je recupere le premier TD d'une ligne TR et le dernier TD d'une ligne TR et que je les supprimes.

Est ce que je peux utiliser firstchild et lastchild ?
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h16   #26
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 079
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 079
Points : 45 213
Points : 45 213
Citation:
il faudrait que je supprime cette élément et qu'a la fin je reaffecte ma valeur à sans les TD à contenu.
comprendre question la avant nous il faut repondre possible.
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h34   #27
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Il faudrait qu'avec ce code
Code :
1
2
3
4
5
6
7
8
9
 
   tabTR = p.Main.document.getElementsByTagName("TR");
    nbr = tabTR.length;
 
    for (i = 0; i < nbr; i++) {
        if (tabTR[i].className == "LigneRubrique") {
         //Traitement pour supprimer le premier TD et dernier TD
        }
    }
je supprime le premier TD et le dernier TD contenu dans le tabTR[i].
Comment récupérer le premier TD? le dernier? Comment les supprimer?
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h42   #28
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
Je ne sais pas si tu comprends l'utilisation de getElementsByTagName mais tu feras le même pour récupérer les TD de chaque TR ensuite supprime le premier et dernier indice retourner.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 14h13   #29
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
    tabTR = p.Main.document.getElementsByTagName("TR");
    nbr = tabTR.length;
 
    for (i = 0; i < nbr; i++) 
    {
        if (tabTR[i].className == "LigneRubrique")
        {
            tabTD = tabTR[i].getElementsByTagName("TD");
            nbTD = tabTD.length;
            for (j = 0; j < nbTD; j++) {
 
                if (j == 0 || j == nbTD) {
                    tabTR[i].parentNode.removeChild(tabTD[j]);
                }
            }
        }
    }
Est ce correct?
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 14h23   #30
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Cela ne fonctionne pas, il me dit Argument non valide.
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 14h37   #31
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
J'ai trouvé mais ce n'est pas ce que je veux car je souhaiterais supprimer les colonnes qui vont apparaitre dans le fichier excel et non celle de ma page.
Ma page courante doit rester intacte.

Cette solution tombe à l'eau sauf si on arrive à modifier le contenu du fichier excel.
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h07   #32
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 079
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 079
Points : 45 213
Points : 45 213
Citation:
souhaiterais supprimer les colonnes qui vont apparaitre dans le fichier excel
Heu tu espère effacer des colonnes dans excel à partir de js ???
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h31   #33
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Exactement, j'aimerais supprimer des colonnes dans l'excel ou le faire juste avant de faire l'export.
Comme vu dans le code, il y a un passage du contenu l_CnuXls à Frl_Xls

J'aimerais modifier Frl_Xls et plus ma page courante car elle ne doit pas changer et si j'ai bien lu le code c'est le submit du Frl_Xls qui effectue l'export.
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h43   #34
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Ne puis je pas agir sur l'export excel enfin juste avant. Il appel la page Xpr_xls.asp donc si dans cette page dans le onload je met le traitement qui supprime les TD est ce faisable?

Voici le code de la page Xpr_Xls.asp
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<%@ Language=VBScript %>
<%response.contentType="application/vnd.ms-excel"%>
<script language="VBScript" runat="server" src="/WLIB_Resources/VBS/string.vbs" ></script>
<%Response.AddHeader "Content-Disposition", "attachment;filename="&string_translate("Export Excel Saphir")&".xls"%>
 
 
<html>
<head>
    <script language="VBScript" runat="SERVER" src="/WLIB_Resources/VBS/request.vbs"></script>
	<link rel="stylesheet" type="text/css" href=".....Style1.css" />
</head>
 
<body>
<%
response.Write(request.form("TabXls"))
%>  
</body>
 
</html>
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h47   #35
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 079
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 079
Points : 45 213
Points : 45 213
Je ne vois là aucun rapport avec javascript ...
JS n'a pas la main sur ton fichier excel
c'est totalement hors de portée de javascript
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h52   #36
Invité régulier
 
Inscription : décembre 2005
Messages : 106
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 106
Points : 9
Points : 9
Ne puis je pas modifier Request.form("TabXls") pour lui supprimer les colonnes genantes?
Si aucune méthode alors je suis foutu lol
Il va falloir que je modifie le contenu avec expressions regulieres
Naruto_kun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h54.


 
 
 
 
Partenaires

Hébergement Web