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

C# Discussion :

Fichier Excel, Workbook.Load() -> getString méthode manquante


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut Fichier Excel, Workbook.Load() -> getString méthode manquante
    Bonjour

    Je réalise une application en C# / .Net sur pocket PC.
    Pour lire dans un fichier excel, j'utilise la library excellibrary.dll

    J'ai un souci, et je ne vois pas du tout d'où ça vient. Ca fait 2 jours que j'essaye de contourner le problème sans succès.

    J'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FileStream fileStream = File.OpenRead("\\test.xls");
    Workbook workbook = new Workbook();
    workbook = Workbook.Load(filestream);
    Worksheet worksheet = workbook.Worksheets[0];
    Et j'ai une erreur sur le load me disant:
    Méthode introuvable : GetString System.Text.Encoding.
    La fonction Load peut prendre un string ou un Stream. J'ai essayé avec le string direct, un stream ou comme ici un FileStream (classe dérivé de Stream), Mais j'ai toujours la même erreur...
    J'ai beau cherché je comprend pas trop pourquoi ni d'où cela peut provenir...


    Je précise le code de la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static Workbook Load(string file)
            {
                return Load(File.OpenRead(file));
            }
     
    public static Workbook Load(Stream fileStream)
            {
                CompoundDocument doc = CompoundDocument.Read(fileStream);
                if (doc == null) throw new Exception("Invalid Excel file");
                byte[] bookdata = doc.GetStreamData("Workbook");
                return WorkbookDecoder.Decode(new MemoryStream(bookdata));
            }
    Ou le code complet: http://code.google.com/p/excellibrar...rkbook.cs?r=43

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Je n'ai toujours pas résolu mon problème

    J'ai essayé de passer mon stream en tableau de byte puis de l'encoder de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbook = Workbook.Load(System.Text.Encoding.UTF8.GetString(byteStream, 0, byteStream.Length));
    En passant, la méthode GetString est bien présente, pourquoi il m’embête...

    Et quelque soit l'encodage que je mets (UTF8, ASCII, ...) je me prends un
    ArgumentException, La valeur n'est pas comprise dans la plage attendue
    A priori de ce que je vois sur le net, sur WindowsMobile 6 ça à l'air d'être en UTF8, mais j'e suis pas sur. De toute façon ça marche avec aucun encodage.

    Toujours pas d'idée...? Je suis un peu perdu. Même une petite aide pourrait peut être m'être utile.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Je n'ai toujours pas résolu mon problème, ça devient gênant...

    Pourtant sur MSDN, c'est bien écrit que dans le compact Framework 2.0, y'a bien la méthode GetString()
    http://msdn.microsoft.com/fr-fr/libr...s%28v=vs.80%29
    http://msdn.microsoft.com/fr-fr/libr...g%28v=vs.80%29
    http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx

    Donc je ne comprend pas pourquoi moi il ne la trouve pas.

    J'ai regardé si il me manquait un using, mais j'ai le System.Text et les autres n'ont pas l'air d'être concerné de toute façon...

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Je suis débutant donc pas sûr du tout de pouvoir t'aider, mais es-tu obligé d'utiliser un filestream pour ton .xls ?

    Je dis ça car je développe une appli ou je vais lire dans un .xls, et je n'utilise pas cette méthode.

    Un bout de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Excel application.              
                        Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application();
                        // Opening Workbook get from DialogBox.
                        Workbook class_act = appExcel.Workbooks.Open(nomCurrFichier, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
     
    // Excel application                 
                        Microsoft.Office.Interop.Excel.Application appExcelcopie = new Microsoft.Office.Interop.Excel.Application();
                        Workbook classeur_copie = appExcelcopie.Workbooks.Open(nomCurrFichier, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
                        Worksheet feuil1copie = (Worksheet)classeur_copie.Worksheets[1];
    Je sais pas si c'est ce qu'il te faut mais en tout cas ça fonctionne bien. (avec nomCurrFichier qui est un string et le chemin de ton fichier)

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Je peux utiliser un fileStream ou un string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbook = Workbook.Load("\\test.xls");
    Mais ça me revient au même. J'ai testé les deux.

    Pour ton code, je te remercie. En effet ça fonctionne très bien, mais uniquement sur PC. Hors je développe une application pour PocketPC, et je ne peux pas utiliser les Interop.Excel malheureusement...

    Et j'ai testé aussi mon application sur PC et ça fonctionne nickel. Y'a vraiment que cette erreur de méthode GetString() manquante que je ne sais pas d'où ça peut provenir. Mais qui en tout cas provient du fait que je développe sur PocketPC...

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Ah ok autant pour moi. Pardon pour le faux espoir du coup... Bon courage !

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 151
    Points : 87
    Points
    87
    Par défaut
    Je ne m'en suis toujours pas sorti...

    J'ai testé ça aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string filePath = "\\test.xls";
    byte[] byteStream = new byte[filePath.Length];
    Workbook workbook = new Workbook();
    byteStream = Encoding.ASCII.GetBytes(filePath.ToCharArray());
    workbook = Workbook.Load(Encoding.ASCII.GetString(byteStream, 0, byteStream.Length));
    Mais ça me revient aussi à l'exception
    MissingMethodException Méthode introuvable : GetString System.Text.Encoding.
    Pourtant à la compilation ça passe bien, je comprend toujours pas d'où vient le problème.

Discussions similaires

  1. [AC-2010] Erreur création fichier Excel avec Workbooks.Add()
    Par Xorbane dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/06/2012, 22h00
  2. création fichier excel méthode saveas
    Par _developpeur_ dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/07/2011, 13h00
  3. Ouvrir un fichier excel dont le workbook est protégé
    Par PoichOU dans le forum Documents
    Réponses: 3
    Dernier message: 21/04/2009, 13h28
  4. Réponses: 2
    Dernier message: 14/08/2008, 20h01
  5. [SSIS] Data loading depuis multiples fichiers Excel et worksheets
    Par finarfin95 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/09/2007, 12h00

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