Tom's Guide > Forum > Programmation > derniere ligne d'une feuille excel

derniere ligne d'une feuille excel

Forum Programmation : derniere ligne d'une feuille excel

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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:

Code :
  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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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.

------------------------------ Réseau IRC Francophone | g33k-zone
Répondre à crazycat@idn

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

Répondre à towanda@IDN

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?

------------------------------ Réseau IRC Francophone | g33k-zone
Répondre à crazycat@idn

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.

Répondre à towanda@IDN

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.

Répondre à towanda@IDN

Youhouuu j'ai trouvé!

Le test correct à effectuer est:

Code :
  1. if (lastRow[i].getType() != CellType.EMPTY ){
  2.     isLastRow = true;
  3. }



Merci pour votre aide

Répondre à towanda@IDN

bravo :)
garde ça au chaud, ça peut resservir :)

------------------------------ Réseau IRC Francophone | g33k-zone
Répondre à crazycat@idn
Tom's Guide > Forum > Programmation > derniere ligne d'une feuille excel
Aller à :

Il y a 1724 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens