Problème avec jexcelapi

Problème avec jexcelapi - Java - Programmation

Marsh Posté le 04-02-2006 à 13:41:48    

Voilà je dois manipuler un fichier excel avec un petit programme en java
J'ai vu qu'il existait pour ca l'api jexcelapi, donc je m'en sers  
Ceci dit ce n'est peut etre pas la meilleure api ?
Tout ce que je dois faire c'est entrer des valeurs à mon programme afin qu'il les écrive dans les bonnes cellules du fichier excel
Mais ce fichier est assez gros et il y a bcp bcp de valeurs à entrer
Et voilà mon problème lorsque je l'exécute :
 
Warning:  Range A77-D77 contains more than one data cell.  Setting the other cells to blank.
Warning:  Range A23-D23 contains more than one data cell.  Setting the other cells to blank.
 
Si je comprends bien il n'aime pas les cellules qui font plusieurs cases, mais j'en ai plein des comme ca..c'est un peu chaque titre de tableau
Donc je voulais savoir si y'a un moyen d'éviter ces warning, parce que après je ne peux pas ouvrir le fichier excel modifié avec Excel 2000
Et au mieux je l'ouvre avec Excel 2003 mais il n'a plus du tout la meme allure..la couleur et tout a disparu, je ne sais pas ce qu'il faut faire pour garder le style du fichier source
Si quelqu'un voit une solution, merci d'avance


Message édité par Kenshin0486 le 05-02-2006 à 21:58:32
Reply

Marsh Posté le 04-02-2006 à 13:41:48   

Reply

Marsh Posté le 07-02-2006 à 11:53:16    

y a un truc pour faire des "merge cell", attend, je cherche

Reply

Marsh Posté le 07-02-2006 à 11:57:03    

Code :
  1. Workbook.createWorkbook(response.getOutputStream());
  2. WritableSheet sh = wb.createSheet("Ma chouette feuille", 0);
  3. sh.mergeCells(0, 0, 22, 0);


 
c'est ça que tu voulais faire, non ?

Reply

Marsh Posté le 07-02-2006 à 17:47:56    

Oui c bon ce problème est réglé merci  :)  
 
Et sinon, pour ce qui est des grapgiques, y'a-t-il un moyen de les gérer ?
Ou bien c'est impossible ?
Parce que lorsque mon fichier possède des graphiques, je ne peux toujours pas l'ouvrir


Message édité par Kenshin0486 le 07-02-2006 à 17:48:36
Reply

Marsh Posté le 07-02-2006 à 22:02:05    

j'ai jamais rien fait avec des graphes... chai même pas si c'est géré :-/
mais la javadoc est ton ami :)


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 21-02-2006 à 14:44:05    

Bonjour tout le monde je suis un petit nouveau icon_smile
Je suis actuellement en stage et je travaille sur la migration de eSpreadSheet vers POI ou JExcel.
Avant de pouvoir migrer je dois vérifier certains points prérequis, et la je cale.
 
Alors mon problème, sur Excel on peut "breaker" une cellule en rajoutant une apostrophe devant sa saisie, exemple : 'exemple.
 
Mon problème arrive quand je veux récupérer une date breakée ('26/09/06 ou '26 déc 2006 ...) le type de la cellule m'interdit de récupérer la cellule en tant que DateCell, car c'est une LabelCell.
Donc j'essaye de faire un bricolage, pour copier cette cellule sur une autre feuille Excel pour me débarasser de l'appostrophe et retrouver le bon type mais cela ne fonctionne pas.
 
La solution idéal serait un moyen de faire reconnaître par Excel le format date automatiquement via la "Barre de formule".
 
Si jamais quelqu'un à une solution je suis tout ouïe.
 
Merci par avance
 
Louis

Reply

Marsh Posté le 21-02-2006 à 15:07:12    

luigi94 a écrit :

Bonjour tout le monde je suis un petit nouveau icon_smile
Je suis actuellement en stage et je travaille sur la migration de eSpreadSheet vers POI ou JExcel.
Avant de pouvoir migrer je dois vérifier certains points prérequis, et la je cale.
 
Alors mon problème, sur Excel on peut "breaker" une cellule en rajoutant une apostrophe devant sa saisie, exemple : 'exemple.
 
Mon problème arrive quand je veux récupérer une date breakée ('26/09/06 ou '26 déc 2006 ...) le type de la cellule m'interdit de récupérer la cellule en tant que DateCell, car c'est une LabelCell.
Donc j'essaye de faire un bricolage, pour copier cette cellule sur une autre feuille Excel pour me débarasser de l'appostrophe et retrouver le bon type mais cela ne fonctionne pas.
 
La solution idéal serait un moyen de faire reconnaître par Excel le format date automatiquement via la "Barre de formule".
 
Si jamais quelqu'un à une solution je suis tout ouïe.
 
Merci par avance
 
Louis


 
Apres des tests poussés, j'ai abandonné JExcel et POI ... Pour repasser a du "bon code VBA !!" YEAH  :lol:  
 
Les problemes rencontrés :
- Copie de feuilles existantes "merdiques" avec perte de mise en forme, perte des images et du formatage de cellule
- Generation de feuilles TRES limite, mise en forme a chier et limitation au niveau des macros (impossibilité??)
- Lourdeur comme c'est pas permis sur le traitement de classeurs en batch (generation d'etat de bord, de calcul via macro existante...)
 
Bref, a proscrire sauf pour 2/3 tableaux et une couleur...

Reply

Marsh Posté le 21-02-2006 à 15:14:26    

Le truc c'est qu'à la base le traitement qu'on doit faire sur Excel n'est que de la lecture. Y a toujours ce problème avec les dates qui avait été détourné avec eSpreadSheet par de la bidouille. Mais cette même bidouille ne marche ni avec POI ni avec JExcel...
 

Reply

Marsh Posté le 21-02-2006 à 18:17:00    

ben.. tu peux pas simplement récupérer ta String, et la parser en Date ?

Reply

Marsh Posté le 22-02-2006 à 09:05:15    

Oui c'est ce que je compte faire, mais c'est dommage de ne pas utiliser Excel pour récupérer la date. Il l'a met en forme automatiquement.  
Le truc chiant c'est que sur Excel il doit y avoir 17 formats de date (ou plus), donc vu que ma seule contrainte c'est que la date soit au format d'Excel, ca va me faire des supers expressions régulières, et des supers enchaînement de tests...
C'est la solution de dernier recours, mais je vais devoir m'y coller.

Reply

Marsh Posté le 22-02-2006 à 09:05:15   

Reply

Marsh Posté le 23-02-2006 à 15:53:33    

J'ai trouvé une solution : j'utilise une fonction d'Excel : DATEVAL() qui à partir d'une date au format string, l'interprète, et donne une date au format Excel : un double. Puis j'utilise la fonction HSSFDateUtil.getJavaDate( ) pour la conversion au format Java.
Le petit problème c'est que je triche un peu, j'utilise une formule présaisie sur une feuille Excel car je n'arrive pas a en rentrer une moi même : cell.setCellFormula("DATEVAL(A1)" ).  
En tout cas ca marche, mais si quelqu'un a une idée pour la saisie de formule je lui en serai très reconnaissant.
 
Louis

Reply

Marsh Posté le 23-02-2006 à 16:38:57    

?

Code :
  1. "DATEVAL("+taStringQuiVaBien+" )"


non?

Reply

Marsh Posté le 23-02-2006 à 17:00:20    

En fait j'ai essayé, et la formule qu'il a dans la cellule est la suivante :
taStringQuiVaBien () DATEVAL. (Dans mon cas à moi : A1 () DATEVAL)
Je ne sais pas comment il entre les formules, mais sur le tuto de POI, ils disent d'entrer les formules au format string, comme si vous la saisissiez sur Excel.
Donc je ne sais pas.
 
Sur JExcel je galère aussi :D . Pour écrire la formule c'est simple, on déclare une Formula, et ensuite on l'ajoute à notre sheet. J'ai bien fait gaffe de changer le format de ma cellule pour qu'Excel me transforme directement ma date au format double au format dd/mm/yyyy... Mais comble du comble, impossible de récupérer le résultat de la formule, je ne récupère que la formule :).
 
Donc va falloir trouver un autre moyen de tricher!
 

Reply

Marsh Posté le 23-02-2006 à 17:08:05    

C'est bon le bricolage sur JExcel j'utilise DateFormulaCell.
 
Ce qui m'embête c'est de devoir trop dépendre d'un fichier Excel pour faire la formule.
Car dans ma solution je récupère le résultat d'une cellule que j'ai écrit à la main dans un fichier excel de "config".

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed