Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur après un export Excel

C#.NET

    15 avril 2011 à 10:50:19

    Bonjour à tous amis zéros,

    Je suis confronté à une erreur en C#.NET,
    Voici ce que je fais:

    J'ai des résultats(chaque résultat a un xml attribute) qui sont dans une classe et je les stocke dans un arraylist.
    Ensuite cet arraylist est passé au travers d'un fichier XSL pour en faire un fichier XML.
    Enfin ce fichier XML est transformé en fichier Excel. (XLS).

    J'ai une erreur non bloquante (c'est a dire que si je clique sur OK, j'ai le tableau que je désire) mais qui est gênante.
    La voici:

    "Le fichier que vous essayez d’ouvrir porte une extension de nom de fichier qui ne correspond pas à son format de fichier réel."

    Quelqu'un a t'il déjà eu cette erreur et pourrait m'aiguiller?
    J'ai essayéde passer le format en CSV, il m'ouvre mon XLS mais evec le format XML dedans...

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2011 à 11:04:05

      Salut Blackat.

      Si tu garde l'extension .xml est-ce que Excel te l'ouvre correctement ? je génère beaucoup de fichier Excel et je passe par le format excel-xml du coup l'extension reste .xml

      Si je met .xsl j'ai cette erreur aussi, en gardant le .xml ça fonctionne bien et avec le noeud mso-application qui va bien Windows l'ouvre directement dans excel.
      • Partager sur Facebook
      • Partager sur Twitter
        15 avril 2011 à 11:07:02

        Je viens d'essayer,

        Alors il m'ouvre le fichier correctement, c'est à dire qu'il m'affiche bien le fichier XML well formed, mais le problème c'est que j'aimerais qu'il m'ouvre ça en format excel pour avoir un tableau tout joli tout beau :)

        (mais il est vrais que du coup j'ai plus d'erreur, mais c'est pas sous ce format la que je le veux)
        • Partager sur Facebook
        • Partager sur Twitter
          15 avril 2011 à 11:12:03

          Serait-il possible que tu nous montre les quelques premières lignes (5-6) de ton xml ?
          • Partager sur Facebook
          • Partager sur Twitter
            15 avril 2011 à 11:24:55

            Bien sur, le voici:

            xml:

            <?xml version="1.0"?>
            <ICL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" a="0" b="0" c="0" d="0" e="0" f="0" g="0" h="0" i="0" j="0" k="0" l="0">
            <IC Pays="AA" aa="0" bb="0" cc="0" dd="0" ee="0" ff="0" gg="0" hh="0" ii="0" jj="0" kk="0" ll="0" />



            ensuite à la suite du premier IC, des lignes IC se répètent et le ICL se referme.
            • Partager sur Facebook
            • Partager sur Twitter
              15 avril 2011 à 11:30:56

              Merci :)

              De ce que je vois ton xml n'est pas formé pour être explicitement ouvert par Excel ?
              je m'exprime peut-être mal mais j'ai l'impression que c'est un fichier xml qui n'a que les données, pas la mise en forme nécessaire pour en faire un excel-xml.

              Si ce fichier n'a d'autres vocation que d'être ouvert par excel je te conseille de regarder du coté du format XML SpreadSheet ou bien cette lib faite par un employé de microsoft d'ailleurs :p qui permet via des objets de générer un fichier xml directement ouvrable par Excel et qui affiche bien les données sous formes de tableau (en plus tu peux gérer les styles, les filtres, plusieurs feuilles, usw...), c'est la lib que j'utilise perso (le .csv étant trop limité pour moi).

              Une autre option que tu peux avoir c'est via ton fichier xsl de générer directement un fichier .csv avec les données bien placées pour Excel (une ligne par ligne dans excel et un ';' entre chaque colonne).
              • Partager sur Facebook
              • Partager sur Twitter
                15 avril 2011 à 11:36:27

                Merci beaucoup, je vais aller voir ça :)

                Je viens de regarder en fait nous utilisons déja cette librairie (premier lien dans ton message) dans le xsl...

                voici les quelques premières lignes du xsl:


                <?xml-stylesheet type="text/xsl"?>
                <xsl:stylesheet version="1.0" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
                <xsl:template match="/">
                <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
                <Styles>
                • Partager sur Facebook
                • Partager sur Twitter
                  15 avril 2011 à 11:44:53

                  Bizarre :euh:
                  Dans ce cas ton XSL devrait produire un fichier XML avec les noeuds qui vont bien, je comprends pas comment dans ton XML résultat on ne retrouve pas (notamment et entre autre) le noeud <Workbook> o_O

                  Comment est-il généré ? via une XslCompiledTransform ? si oui, est-ce qu'il subit encore des transformations/modifications ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 avril 2011 à 11:49:11

                    l'xml est généré via XslTransform.

                    voici le morceau de code correspondant:

                    XmlUrlResolver xur = new XmlUrlResolver();
                    xur.Credentials = System.Net.CredentialCache.DefaultCredentials;
                    XslTransform xt = new XslTransform();
                    xt.Load(fichier_XSL.FullName, xur);

                    As-tu une piste?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 avril 2011 à 11:59:16

                      Ok donc tu charges ta feuille XSL pour préparer la transfo, la transfo en elle-même te génère le XML avec les noeuds IC ou bien celui-ci est-il le flux en entrée de ta transformation ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 avril 2011 à 12:03:57

                        mon flux d'entrée est le ICL, et le xml est composé d'un entête qui est contenu (dans le xsl) dans icl et toute les données d'entrée sont dans le IC.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 avril 2011 à 12:05:26

                          Et le xml que tu as en sortie il ressemble à quoi ? tu sauvegarde le résultat de xt.Transform comment (et où) ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 avril 2011 à 13:23:12

                            Le xml que j'ai en sortie ressemble à celui que je t'ai montré tout à l'heure.

                            pour le reste:

                            FileStream fs = new FileStream(fichierXLS.FullName, FileMode.Create);
                            xt.Transform(xd, null, fs, xur);
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Erreur après un export Excel

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown