Se connecter / S'enregistrer
Votre question

derniere ligne d'une feuille excel

Tags :
  • Java
  • Programmation
Dernière réponse : dans Programmation
6 Décembre 2006 10:42:46

Bonjour,

j'utilise JExcelApi pour travailler en Java avec des fichiers Excel et j'ai un petit souci:

je voudrais sélectionner la dernière ligne contenant des cellules non vides. La fonction Sheet.getRows(), qui est censée me retourner le nombre de lignes de la feuille, me renvoie un nombre trop grand.

Si j'ouvre mon fichier et que je fais un CTRL+end, je constate qu'effectivement la fin de la feuille se trouve après quelques lignes vides.
J'ai donc créé une petite routine qui inspecte les cellules ligne par ligne depuis la fin de la feuille et qui décrémente le nombre total de lignes tant qu'il n'en trouve pas une contenant une valeur:

  1. boolean isLastRow = false;
  2. int colLength = sheet.getRows();
  3. do {
  4. Cell [] lastRow = sheet.getRow(colLength-1);
  5. Cell tmpCell = lastRow[0];
  6. for (int i=0; i<lastRow.length && !isLastRow; i++, colLength--) {
  7. if ((lastRow[i].toString() != "") && (lastRow[i].toString() != " ")){
  8. isLastRow = true;
  9. }
  10. }
  11. if(!isLastRow) {
  12. colLength--;
  13. }
  14. } while (!isLastRow && colLength >=0);



colLength est donc censée me donner le nombre "réel" de lignes (sans les lignes blanches de fin). Mais elle me donne toujours un nombre trop grand.

Avez-vous une idée pour résoudre mon problème?

Merci beaucoup beaucoup beaucoup beaucoup

Autres pages sur : derniere ligne feuille excel

a c 145 L Programmation
6 Décembre 2006 11:33:37

décrémenter encore une fois colLength de 1.
Je ne connais pas ton système, ni le fonctionnement, mais si ça fonctionne comme un tableau, la première ligne est indicée 0, donc ton indice final est colLength-1.
6 Décembre 2006 11:41:28

Ouioui ça je sais, j'en tiens déjà compte. L'erreur ne vient pas de là.

Merci quand-même.
Quelqu'un a une autre idée? Je ne dois sûrement pas être la première à avoir eu ce problème...

Merci
Contenus similaires
a c 145 L Programmation
6 Décembre 2006 12:29:23

peux tu déterminer l'écart entre le nombre réel de lignes et celui retourné par ta fonction?
Et question stupide: est-ce qu'une row convertie en string donne bien "" ou " " si elle est vide? Ne devrais-tu pas plutôt chercher une cellule?
6 Décembre 2006 13:10:01

Si je le savais mon problème serait résolu :-D

Je convertis et teste chaque cellule, regarde bien le code.
Je boucle (while) sur le nombre de rows à partir de la fin et sur le nombre de cellules dans chaque row (for) pour vérifier leur contenu.
6 Décembre 2006 13:12:46

au passage, le "Cell tmpCell = lastRow[0];" est en trop, il ne sert à rien, et je me suis rendue compte qu'il ne faut pas utiliser toString() mais getContents().

Mais cela ne change absolument rien à mon problème.
6 Décembre 2006 13:37:28

Youhouuu j'ai trouvé!

Le test correct à effectuer est:
  1. if (lastRow[i].getType() != CellType.EMPTY ){
  2. isLastRow = true;
  3. }


Merci pour votre aide
a c 145 L Programmation
6 Décembre 2006 13:43:42

bravo :) 
garde ça au chaud, ça peut resservir :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS