problème crash Excel 2000 après supression d'un onglet - Java - Programmation
Marsh Posté le 05-10-2009 à 15:28:43
Peut-être est-ce parce que tu supprimes l'onglet que tu as sélectionné.
Marsh Posté le 06-10-2009 à 09:36:34
Non l'onglet que je supprime est l'onglet intitulé "Reception" et celui que j'active est "mySheet". J'avais effectivement identifier ce problème avec une version antérieure de POI. Cette même version ne permettant pas l'activation explicite d'un onglet.
Marsh Posté le 06-10-2009 à 16:15:34
C'est peut-être une question idiote mais je vois que tu changes le nom du sheet 0 et ensuite tu fais une recherche de l'indice du sheet qui porte le nom que tu viens de mettre... cet indice sera 0 donc pourquoi faire une recherche?
Sinon as-tu vérifié que getSheetIndex renvoie une valeur correcte pour l'onglet "Reception" ? Si un tel onglet n'est pas trouvé par exemple car son nom est légèrement différent ou comporte un espace à la fin, est-ce que cette méthode renvoie 0 ou -1? Si oui, c'est peut-être la cause de ton problème.
Marsh Posté le 06-10-2009 à 16:43:04
Effectivement, la recherche sur l'indice sur l'onglet précédemment renommé est peut-être super-flux. Ceci dit, je doute que cela soit la cause du problème.
En ce qui concerne ta deuxième question, il faut que je vérifie la valeur retour de getSheetIndex("Reception" ). Aucune exception n'est levée lors de l'ouverture du fichier avec Excel 2000, Excel plante. Si j'ouvre le fichier avec un Excel 2003, Excel s'ouvre puis affiche une pop-up avec le message suivant
Code :
|
Et l'onglet "Reception" a bien été supprimé.
Marsh Posté le 12-10-2009 à 11:56:50
Ne devrais-tu pas plutôt utiliser ton instance POIFSFileSystem pour écrire ton fichier ?
Marsh Posté le 11-06-2010 à 09:00:51
Utiliser un template excel pour générer un report est bien pratique Excel ce charge de la mise en forme
et POI+java permet de remplir les cellules avec les données concernées.
Selon le rapport on veut pouvoir supprimer certaines feuilles du classeur Excel "template" pour ne garder que
celles désirées par l'utilisateur final du systéme.
Cependant avec cette version de POI (poi-3.2-FINAL-20081019), il semble y avoir un bug, lorsque l'on supprime une feuille du classeur Excel.
POI se mélange les pinceaux avec les noms de plages de cellule (classe HSSFName) et supprime des plages
non affectés à la feuille supprimé.
(Sur Excel on défini une plage de cellules par "Insertion->Nom->Définir..." )
La classe HSSFName permet de gérer les noms définis par l'utilisateur ainsi que la zone d'impression.
A noter que cette erreur ce produit également si on supprime les noms spécifiques à la feuille supprimée (cf extrait de code)
une façon de contourner le problème est de rendre la feuille invisible.
exemple de code qui ne marche pas bien que l'on supprime les noms associés à la feuille supprimée:
Code :
|
Marsh Posté le 05-10-2009 à 11:17:58
Bonjour,
Nous utilisons POI version poi-3.2-FINAL-20081019.jar pour la génération de fichier Excel.
La génération est effectuée à partir de template Excel. Lors de cette génération, nous devons supprimer des onglets contenus dans le template.
Pas de problème lors de la génération, en revanche, lorsque l'on ouvre le fichier avec Excel 2000 (version cible), celui-ci fait planter Excel.
Voici le code utilisé :
Avez-vous une idée de la cause de ce plantage.
Merci d'avance
Message édité par tmaoptiim le 06-10-2009 à 09:37:16