Apache POI nombre de lignes
Je suis en utilisant Apache POI java et que vous souhaitez obtenir le nombre total de lignes qui ne sont pas vides. J'ai traité avec succès une ligne entière avec toutes ses colonnes. Maintenant, je suis en supposant que je reçois une feuille excel avec plusieurs lignes et pas une seule ligne...alors comment aller à ce sujet? Je pensais obtenir nombre total de lignes (int n) et ensuite en boucle jusqu'à ce que i<=n, mais pas sûr.
Suggestions sont les bienvenus 🙂
Remarque: Apache POI version 3.8. Je ne suis pas traiter avec format Xlsx...seulement xls.
Oui, j'ai essayé ce code mais j'ai reçu 20 en retour....ce qui n'est pas possible étant donné que j'ai seulement 5 lignes
FileInputStream fileInputStream = new FileInputStream("COD.xls");
HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
HSSFSheet worksheet = workbook.getSheet("COD");
HSSFRow row1 = worksheet.getRow(3);
Iterator rows = worksheet.rowIterator();
int noOfRows = 0;
while( rows.hasNext() ) {
HSSFRow row = (HSSFRow) rows.next();
noOfRows++;
}
System.out.println("Number of Rows: " + noOfRows);
- Qu'est-ce exactement avez-vous essayé et ce n'est pas de travail? Pouvez-vous donner un code?
- Il n'est pas agréable, mais je suppose que c'est comment il est fait. Vous pouvez utiliser le HSSFSheet directement dans une boucle foreach, car il met en œuvre Itérable<Ligne>. Ils n'appellent pas ça Horrible Feuille de Format (HSSF) pour rien 🙁 Peut-être que vous êtes l'obtention de 20 à la place de l'5 lignes parce que vous avez des lignes avec des valeurs null. Vous devez effectuer une itération sur les cellules et ignorer toutes les lignes avec des valeurs nulles uniquement.
- Je pense que je l'ai résolu...parce que j'ai des menus déroulants dans la feuille excel donc quelque part dans la feuille de ces listes existent. Maintenant, c'est de travailler et d'afficher les numéros de ligne droite
Vous devez vous connecter pour publier un commentaire.
Le problème est que POI considère les lignes vides comme des lignes physiques. Cela se produit parfois dans Excel, et bien qu'ils ne sont pas visibles à l'œil nu, les lignes existent certainement.
Si vous ouvrez votre feuille de calcul Excel et sélectionnez tout en dessous de vos données, puis de le supprimer (je sais que c'est vide, mais le faire de toute façon), POI sera de retour le bon numéro.
Vous pouvez getPhysicalNumberOfRows() autre que getLastRowNum()?
Vous pouvez effectuer une itération sur les lignes qui ne sont pas vides à l'aide de ceci:
Grâce
Cette méthode va vous donner le dernier numéro de ligne où vous avez remplissez la ligne, même si vous avez rempli les 5 lignes, il y a des cas que vous pourriez avoir rempli quelques places dans les 15 autres lignes ou lors de la 21e de ligne en raison de laquelle il donne le dernier numéro de ligne 20.
Il ne peut être le cas que dans tous les 5 ligne vous entre des données (à partir de 1), alors votre 5ème sera entrée dans le 21e de ligne, encore une fois, si vous utilisez cette méthode, vous obtiendrez 20 dans le résultat.