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

API standards et tierces Java Discussion :

jxl.Workbook.createWorkbook(File file,Workbook in) - java.lang.IndexOutOfBoundsException: Index: 26, Size: 24


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut jxl.Workbook.createWorkbook(File file,Workbook in) - java.lang.IndexOutOfBoundsException: Index: 26, Size: 24
    Bonjour,
    j'utilise la librairie jxl afin de creer et sauvegarder des .xls avec java, cependant j'ai constaté une erreur lorsque j'essaie d'ouvrir un .xls creer par mon application (cette erreur n'a pas lieu pour tous les .xls creer par mon application mais seulement certains)

    Tout d'abord je declare mes "workbook"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbook workbookRead;
    WritableWorkbook workbook=null;
    puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    File fileOut=new File(nomFichier);
    File filein=new File(nomFichiercopie);
    workbookRead=Workbook.getWorkbook(filein);
    workbook=Workbook.createWorkbook(fileOut,workbookRead);//ligne 856 de RS232fileXL.java
    et j'obtiens cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 26, Size: 24
    	at java.util.ArrayList.rangeCheck(Unknown Source)
    	at java.util.ArrayList.get(Unknown Source)
    	at jxl.biff.FormattingRecords.getNumberFormat(FormattingRecords.java:244)
    	at jxl.read.biff.NumberRecord.<init>(NumberRecord.java:73)
    	at jxl.read.biff.SheetReader.read(SheetReader.java:496)
    	at jxl.read.biff.SheetImpl.readSheet(SheetImpl.java:716)
    	at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:257)
    	at jxl.write.biff.WritableWorkbookImpl.copyWorkbook(WritableWorkbookImpl.java:969)
    	at jxl.write.biff.WritableWorkbookImpl.<init>(WritableWorkbookImpl.java:343)
    	at jxl.Workbook.createWorkbook(Workbook.java:339)
    	at jxl.Workbook.createWorkbook(Workbook.java:320)
    	at projetSMTP.RS232fileXL.createFileExcel(RS232fileXL.java:856)
    PS: Si j'ouvre mon fichier .xls avec Excel et que je fais Ctrl+S, je n'obtiens plus l'erreur par la suite.

    Auriez-vous une solution ?

    Cordialement.

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Citation Envoyé par poiuyu Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.IndexOutOfBoundsException: Index: 26, Size: 24
    Cette ligne indique que tu essais d'accéder à une case d'un tableau qui n'existe pas.
    Ton tableau a une taille de 24 et toi tu essais d’accéder à la case 26, normal qu'il n'aime pas trop..

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Et les lignes d'après indiquent que c'est la petite cuisine de JXL qui fait ça. Probablement des cases de tableur qui ne se retrouvent pas les unes les autres, ou qui sont pas dans le bon état, ou que sais-je. L'habituel chamanisme avec les fichiers MS Office.

    Mais bon, pour copier un fichier, c'est inutile de passer par JXL. Files.copy() est bien suffisant.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Les fichiers xls que vous ouvrez, sont-ils tous avec certitude des fichiers xls format Excel 97 ?...
    Si c'est le cas, dans les fichiers qui plantent, il y a peut-être des lignes masquées. C'est possible dans Excel de rendre des lignes, ou des colonnes invisible. Il est aussi possible que des volets aient été figés.
    Il y a des limites à jxl...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    Citation Envoyé par pursang Voir le message
    Les fichiers xls que vous ouvrez, sont-ils tous avec certitude des fichiers xls format Excel 97 ?...
    Si c'est le cas, dans les fichiers qui plantent, il y a peut-être des lignes masquées. C'est possible dans Excel de rendre des lignes, ou des colonnes invisible. Il est aussi possible que des volets aient été figés.
    Il y a des limites à jxl...
    Les fichiers .xls que j'ouvre sont des fichiers crées par JXL.

    Citation Envoyé par thelvin Voir le message
    Mais bon, pour copier un fichier, c'est inutile de passer par JXL. Files.copy() est bien suffisant.
    Je ne cherche pas à copier un fichier, mais à ouvrir un fichier xls lors du relancement de mon application, afin d'écrire à la suite


    Apparament, selon JExcelApi Yahoo Group, JXL n'est pas conçu (et debuggé) pour ouvrir des fichiers xls créer par JXL.
    J'ai essayer d'ouvrir les fichiers xls avec apache POI, ça marche, mais les ouvrir avec POI et les sauvegarder n’empêche pas l'erreur (alors qu'ouvrir avec excel et sauvegarder l’empêche), modifier la totalité de mon code pour le faire fonctionner avec POI n'est pas souhaitable (l'API jxl est utilisé un peu partout dans mes milliers de ligne de code, et l'utilisation de POI semble différente de celle de jxl)

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Avez-vous la possibilité de mettre à disposition un tel fichier, avec un contenu fictif bien sûr ?
    Ce que vous décrivez m'intéresse. Et cela me permettrait de chercher et peut-être vous aider à trouver une solution...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/01/2015, 22h41
  2. Erreur "java.lang.IndexOutOfBoundsException: Index: 4, Size: 4"
    Par ddgrissa dans le forum Débuter avec Java
    Réponses: 18
    Dernier message: 04/12/2014, 12h32
  3. Réponses: 5
    Dernier message: 07/02/2013, 12h36
  4. java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    Par john_wili dans le forum Struts 1
    Réponses: 3
    Dernier message: 29/03/2009, 09h42
  5. Erreur java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
    Par impossibeulman dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 07/08/2008, 15h18

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