Trouver la dernière ligne dans une feuille de calcul Excel
J'essaie de trouver l'indice de la dernière ligne dans une feuille de calcul excel à l'aide de Apache POI pour Java.
J'ai pensé que cela devrait être possible avec getLastRowNum()
ou getPhysicalNumberOfRows()
mais ils ne semblent pas donner les résultats escomptés. Par exemple, j'ai une une ligne de la feuille de calcul et de ces deux fonctions renvoient une valeur de 1140. Un autre deux feuilles de calcul obtient une valeur de 1162.
L'autre problème est que je ne peux pas il suffit de regarder pour la première ligne vide, car il peut être possible d'avoir des lignes vides entre les lignes de données valides.
Donc, il y a un moyen de trouver l'indice de la dernière ligne? Je suppose que je pourrais en faire une exigence de ne pas avoir de ligne vide entre les données, mais je m'attendais à une meilleure solution.
Edit: Pour l'enregistrement à l'aide d'un itérateur n'a pas aidé. Il vient de parcourir le 1140/1162 censé lignes.
OriginalL'auteur FromCanada | 2010-04-15
Vous devez vous connecter pour publier un commentaire.
- Je obtenir les résultats escomptés à l'aide de poi-3.6-20091214 et un
test.xls
avoir deux lignes vides suivie par trois occupée lignes:De sortie:
4
De toute façon, la réforme de l'errant livres pour manuel attention en vérifiant une incompatibilité?
cela fonctionne dans le cas normal..mais ne fonctionnent pas lorsque vous exécutez le code pour les mêmes excel après la suppression de ces quelques lignes...de la feuille.getLastRowNum donnera le numéro précédent de lignes seulement...
Avez-vous un travail?
OriginalL'auteur
vous pouvez utiliser la méthode suivante pour obtenir l'origine de nombre de lignes.
OriginalL'auteur
Je sais comment résoudre votre problème à l'aide de VBA, mais je ne suis pas sûr de la façon d'obtenir l'équivalent de l'information de l'Apache POI interface. En VBA, pour obtenir la gamme de utilisé des cellules dans la feuille "Sheet1", utilisation:
Cela renvoie une
Range
objet qui possède des propriétés qui fournissent de plus amples informations. Par exemple, pour obtenir le nombre de lignes dans ceRange
, utilisation:Encore une fois, je ne suis pas sûr de savoir si c'est acessible via le PI de l'API, mais si non, peut-être qu'il fournit un moyen de l'exécution arbitraire des extraits de VBA?
OriginalL'auteur
La seule façon de le savoir est de tester les lignes. Voici la solution que j'utilise pour le même problème:
Remarque: ce ne vérifie pas pour les lignes qui semblent être vide, mais ne le sont pas, telles que les cellules qui ont une chaîne vide en eux. Pour cela, vous avez besoin d'une solution plus complète comme:
OriginalL'auteur
Vous pouvez le faire par le code suivant:
Cependant, je suis en train de le faire dans Apache POI 3.7, mais ne pouvait pas trouver la
SVTableModel
dans l'API. Cela a été supprimée depuis la 3.2, je suppose.OriginalL'auteur
J'ai eu le même problème avant. J'utilise cette astuce pour obtenir le droit de la ligne renvoyée valeur:
Ce n'est pas la question de la PI de la bibliothèque.
OriginalL'auteur
OriginalL'auteur