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

Documents Java Discussion :

[POI] Warning + Erreur à l'ouverture d'un Classeur Excel


Sujet :

Documents Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 52
    Points
    52
    Par défaut [POI] Warning + Erreur à l'ouverture d'un Classeur Excel
    Bonjour à tous,

    j'utilise la librairie POI HSSF pour tenter d'ouvrir un fichier Excel :

    poi-2.5.1-final-20040804.jar
    et poi-contrib-2.5.1-final-20040804.jar

    mais je me retrouve avec le message 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
     
    		Classeur : C:\Temp\monFichierExcel.xls
    [WARNING] Unknown Ptg 3d (61)
    [WARNING] Unknown Ptg 3d (61)
    [WARNING] Unknown Ptg 3d (61)
    [WARNING] Unknown Ptg 3d (61)
    [WARNING] Unknown Ptg 3d (61)
    [WARNING] Unknown Ptg 3d (61)
    [WARNING] Unknown Ptg 3d (61)
    java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    	at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:224)
    	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
    	at business.extractfees.Go.doTreatment(Go.java:79)
    	at business.extractfees.Go.main(Go.java:24)
    Caused by: java.lang.ArrayIndexOutOfBoundsException
    	at java.lang.System.arraycopy(Native Method)
    	at org.apache.poi.hssf.record.UnknownRecord.<init>(UnknownRecord.java:62)
    	at org.apache.poi.hssf.record.SubRecord.createSubRecord(SubRecord.java:57)
    	at org.apache.poi.hssf.record.ObjRecord.fillFields(ObjRecord.java:99)
    	at org.apache.poi.hssf.record.Record.fillFields(Record.java:90)
    	at org.apache.poi.hssf.record.Record.<init>(Record.java:55)
    	at org.apache.poi.hssf.record.ObjRecord.<init>(ObjRecord.java:61)
    	... 9 more
    org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance, the following exception occured: null
    	at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:237)
    	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
    	at business.extractfees.Go.doTreatment(Go.java:79)
    	at business.extractfees.Go.main(Go.java:24)
    J'ai essayé de vérifier si c'est à cause du répertoire qui était en lecture seule : après correction => même erreur.

    Le code que j'utilise est le 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
     
    InputStream is = null;
                            try{
                                is = new FileInputStream(fileChild2);
                                //HSSFWorkbook wb = new HSSFWorkbook();
                                POIFSFileSystem poifsFileSystem = new POIFSFileSystem(is);
     
                                HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem, false); // CA PLANTE ICI !!! 
     
                                HSSFSheet sheet = wb.getSheet(ExtractFeesConstants.SHEET);
     
                                sheet = null;
                                wb = null;
                            }catch(FileNotFoundException ex){
                                System.err.println("\t\t\tImpossible de trouver le fichier : "+fileChild2+"; "+ex.getMessage());
                                continue;
                            }catch(IOException ex){
                                System.err.println("\t\t\tImpossible d'ouverture le fichier : "+fileChild2+"; "+ex.getMessage());
                                continue;
                            }finally{
                                System.gc();
                            }

    Bref tout ceci me paraît vraiment bizarre, je tente à peine d'ouvrir le ficheir Excel.

    Note : il y a des macros dans ce fichier. certaines sont mêmes activées par mot de passe. Est ce que cela peut jouer ?

    Les idées de chacun sont les bienvenues ...

    Cordialement

  2. #2
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 52
    Points
    52
    Par défaut
    Bonjour à tous,

    j'ai identifié la solution : utiliser la dernière version (3.0) :
    poi-3.0.1-FINAL-20070705.jar
    poi-contrib-3.0.1-FINAL-20070705.jar
    poi-scratchpad-3.0.1-FINAL-20070705.jar


    Par contre, je me pose une autre question :
    est il possible d'ouvrir, avec POI-HSSF, un classeur Excel qui a été "crypté" ? Ou tout au moins, dont l'ouverture est protégé par mot de passe ?
    Bien évidemment, on suppose que je possède le dit login / password.

    Cordialement,

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut emplacement du fichier...


    Juste une petite question. Comment tu fais pour spécifier l'emplacement de ton fichier.
    Par exemple moi dans mon cas, j'aimerai ouvrir puis remplir un fichier (template.xls) qui se trouve sur c:\Temp ?

    Merci pour la réponse

  4. #4
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 52
    Points
    52
    Par défaut
    Bah tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File fileChild2 = new File("C:\\Temp\\template.xls"); 
    InputStream is = new FileInputStream(fileChild2);
    ??

    Sinon je deviens fou : j'ai le même problème que j'avais il y a quelques mois, mais cette fois ci en voulant upgrader les bilibiothèques utilisées (de 3.0.1 à 3.0.2) :
    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
     
    org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance
    	at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:199)
    	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:117)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:207)
    	at business.extractfees.Go.doTreatmentByExcelFile(Go.java:298)
    	at business.extractfees.Go.extractDataFromRepertoryGeneral(Go.java:205)
    	at business.extractfees.Go.doTreatment(Go.java:87)
    	at business.extractfees.Go.main(Go.java:67)
    Caused by: java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    	at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:187)
    	... 6 more
    Caused by: java.lang.UnsupportedOperationException:  Unknown Ptg in Formula: 0x2 (2)
    	at org.apache.poi.hssf.record.formula.Ptg.createPtg(Ptg.java:357)
    	at org.apache.poi.hssf.record.DVRecord.fillFields(DVRecord.java:201)
    	at org.apache.poi.hssf.record.Record.<init>(Record.java:55)
    	at org.apache.poi.hssf.record.DVRecord.<init>(DVRecord.java:134)
    	... 11 more
    C'est à dire que ça plante à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem, false);
    Alors c'est assez ironique parce que :
    POI 2.5.1 : Ca ne marche pas, le constructeur de HSSFWorbook plante
    POI 3.0.1 : Ca marche !
    POI 3.0.2 : Ca ne marche plus (cf ci dessus).

    J'utilise :
    3.0.1 :
    poi-3.0.1-FINAL-20070705.jar
    poi-contrib-3.0.1-FINAL-20070705.jar
    poi-scratchpad-3.0.1-FINAL-20070705.jar

    3.0.2 :
    poi-3.0.2-FINAL-20080204.jar
    poi-contrib-3.0.2-FINAL-20080204.jar
    poi-scratchpad-3.0.2-FINAL-20080204.jar

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    J'ai également ce problème en ayant upgradé de POI 3.1 à POI 3.6

    Il semblerait aussi que d'autres problèmes se posent lorsque des fichiers xlsx sont renommés en xls.

    En fouillant sur le site d'Apache, l'erreur serait corrigée dans une mise à jour partielle du POI mais pour bien faire, il faudrait qu'ils sortent POI 3.7. Quelqu'un a une idée de la date de sortie de la version 3.7?

Discussions similaires

  1. Verifier l'ouverture d'un classeur Excel
    Par Chipss dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 14/10/2010, 10h37
  2. [POI]Pb à l'ouverture d'un classeur Excel
    Par Mengué georges dans le forum Documents
    Réponses: 0
    Dernier message: 04/06/2010, 15h22
  3. Réponses: 7
    Dernier message: 17/09/2008, 16h52
  4. Problème d'ouverture d'un classeur Excel
    Par BM42 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 21/11/2006, 09h43

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