Le comte not null ligne dans le fichier Excel à l'aide d'Apache POI
N'Apache POI fournit aucune fonction pour nous de compter le nombre de "non-null" lignes dans une feuille d'un fichier Excel?
Pour la première fois, j'ai une feuille Excel avec 10 lignes de données, la fonction de feuille de calcul.getPhysicalNumberOfRows() renvoie le nombre exact (10). Mais après, j'ai supprimer les 3 lignes, alors que la fonction est toujours de 10 lignes. Peut-être que le nombre total de lignes a été mis en cache n'importe où en PVE. Ce n'getPhysicalNumberOfRows ()? Comme son API décrit: "Renvoie le nombre de physiquement défini les lignes (PAS le nombre de lignes dans la feuille)", mais je ne comprends pas ce que "physiquement défini" signifie. Pouvez-vous m'aider sur cette question?
Merci beaucoup!
OriginalL'auteur | 2011-06-08
Vous devez vous connecter pour publier un commentaire.
Si vous supprimez les lignes par feuille de calcul.removeRow(Ligne de ligne), puis la physique sur le nombre de lignes doit être 7.
PI utilise une carte pour stocker les lignes d'une feuille. Cette carte est la partie physique. Voir http://www.google.com/codesearch/p?hl=de#WXzbfAF-tQc/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
À l'logiquement lignes nulles, essayez
je vais avoir le même problème avant. ma solution consiste à écrire la fonction d'assistance à vérifier.
OriginalL'auteur Wolfgang Kuehn
Si vous regardez le code de la PI 3.8 beta 3, vous verrez que la suppression d'une ligne, vous devez également supprimer son dossier. En tant que tel, le nombre de lignes dans le fichier devrait aller trop
Je vous suggère de commencer avec une nouvelle version de POI
Pour compter le nombre de lignes vides dans un fichier, de faire quelque chose comme Amadeus suggère et en boucle sur les lignes sur la feuille et vérifier si elles ont des cellules.
OriginalL'auteur Gagravarr
Si vous supprimez manuellement, assurez-vous d'utiliser supprimer la ligne et non seulement supprimer les données dans les cellules, alors il sera de retour la valeur correcte.
OriginalL'auteur Oneb
J'ai eu le même problème. Si je supprime les lignes manuellement, encore le nombre de lignes n'ont pas diminué, quand j'ai vérifié à l'aide de la feuille.getPhysicalNumberOfRows().
Quand j'ai profondément suis allé dans ce problème, j'ai trouvé le problème exact. J'ai eu un mail de la colonne dans ma rangée, et quand je suis entré une adresse e-mail de MS Office détecte automatiquement une adresse de courriel. Et quand j'ai supprimer la ligne entière manuellement, la cellule qui a effectué l'adresse courriel de la "" en tant que sa valeur(il ne sera pas visible, mais j'ai trouvé que la valeur de l'obtention d'initialisation lorsque je l'ai lu grâce à java). Donc, depuis cette cellule a pas une valeur nulle(""), la totalité de cette ligne est d'obtenir déclarée(en quelque sorte) et le nombre de lignes est augmenté.
Le plus drôle, c'est que lorsque je n'ai pas d'entrer une adresse e-mail, et il suffit d'entrer une chaîne de caractères, puis supprimer la ligne, la cellule n'est pas initialisée et le ROWCOUNT AI DIMINUÉ en fait. C'est ce que j'ai trouvé la suite de mon problème.
Enfin j'ai résolu, non seulement addding null vérifier pour les cellules, mais aussi
if(cell != "")
Espère que cela peut être utile pour vous
OriginalL'auteur Maheshwaran K
Nous pouvons écrire une méthode personnalisée qui permettra d'ignorer les lignes vides à donner le nombre de lignes. Sans doute on peut faire quelques hypothèses fondées sur les exigences. Par exemple dans mon cas, une ligne peut être considérée comme vide si sa première valeur de la colonne est vide et que le comte n'est nécessaire que jusqu'à la première ligne vide.
Donc l'extrait de code suivant pourrait être utile:
OriginalL'auteur san1deep2set3hi