IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Supprimer une colonne en javascript


Sujet :

JavaScript

  1. #21
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #22
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Il te manque un "}" pour fermer la boucle for comme je me souciais plus haut.

  3. #23
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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 ?

  4. #24
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059

  5. #25
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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 ?

  6. #26
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    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.

  7. #27
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    Il faudrait qu'avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  8. #28
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    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.

  9. #29
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  10. #30
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    Cela ne fonctionne pas, il me dit Argument non valide.

  11. #31
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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.

  12. #32
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    souhaiterais supprimer les colonnes qui vont apparaitre dans le fichier excel
    Heu tu espère effacer des colonnes dans excel à partir de js ???

  13. #33
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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.

  14. #34
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  15. #35
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    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

  16. #36
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    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

Discussions similaires

  1. [Oracle 7.3.4]Supprimer une colonne d'une table
    Par soazig dans le forum Oracle
    Réponses: 6
    Dernier message: 23/02/2006, 19h24
  2. [excel]comment supprimer une colonne vide...
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/10/2005, 13h10
  3. Supprimer une colonne SQLServer 6.5
    Par Mr N. dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/09/2004, 17h16
  4. Instruction SQL qui supprime une colonne d'une table
    Par tseg dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/10/2003, 20h47
  5. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo