Compter le nombre de lignes dans une colonne de la feuille Excel(code Java fourni)
En référence à ma question précédente Comment calculer le nombre de lignes dans une colonne de document Excel à l'aide de Java j'ai été en mesure de calculer le nombre total de colonnes dans la feuille donnée. Maintenant, la moitié du travail est encore à faire que je veux calculer le nombre de lignes dans une colonne particulière. Solution Possible pourrait être à l'aide de tableau 2d et de stockage des index de colonne et les lignes de totaux ou de l'utilisation de la carte, etc. Comment je peux faire? Le code Java est fourni ici. Je suis de droite count(nombre de colonnes) pour mon fichier de démonstration. Veuillez modifier/proposer les modifications nécessaires.
(edit): j'ai utilisé le programme de la carte pour calculer magasin index de colonne comme clé et le nombre de lignes de la valeur, mais il n'était pas au travail, peut être de la logique appliquée en avait tort. Eh bien, si je veux accomplir cela en utilisant de Hachage Carte, comment je peux stocker nombre de lignes dans une colonne particulière(lors de l'itération) comme un valeur
De Code Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.poi.ss.formula.functions.Column;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelRead {
static int colrange=1000;
public static void main(String[] args) {
HashMap hm=new HashMap();
int count=0;
try {
FileInputStream file = new FileInputStream(new File("C:/Users/vinayakp/Desktop/Demo2.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t\t");
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println("");
}
for(Row r:sheet)
{
short minColIx=r.getFirstCellNum();
short maxColIx=r.getLastCellNum();
for(short colIx=minColIx;colIx<maxColIx;colIx++) {
Cell c= r.getCell(colIx);
if(c!=null) {
if(c.getCellType()== Cell.CELL_TYPE_STRING||c.getCellType() == Cell.CELL_TYPE_NUMERIC||c.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
count++; ---//can i use hashcode in here to get the key and value pair? key=column index value=total number of rows in that column
}
}
else break;
}
}
System.out.println("\nTotal Number of columns are:\t"+count);
System.out.println(hm);
file.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException ae) {
ae.printStackTrace();
}
}
}
OriginalL'auteur Vinayak Pahalwan | 2012-12-14
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Code testé
J'ai créé un fichier xlsx avec la cellule suivante de données:
Le contenu de dataCount tableau est: est-ce
col 0: 6
col 1: 6
col 2: 4
col 3: 5
col 4: 7
Nombres sur la droite de compter le nombre de cellules contenant les données pour chaque colonne, y compris la ligne d'en-tête.
Si vous souhaitez exclure de la ligne d'en-tête, il suffit de retirer la ligne:
rowIter = feuille.rowIterator();
juste avant la boucle while.
Est-ce ce que vous recherchez?
for loop
je n'ai pas obtenu le résultat souhaité. Pouvez-vous modifier le sna et laissez-moi savoir comment je peut itérer à travers la liste de la feuille 10 colonnes?J'ai modifié le code. Veuillez vérifier si son travail parce que je n'ai pas testé. =)
l'o/p est Données: Données: B: C....et ainsi de suite (l'impression de l'en-tête que le contenu de la cellule)
le problème est qu'il lit les données de la ligne sage et ce que j'ai fait c'est que je suis capable d'extraire 1 cellule et calculé le nombre de lignes de données, quand je suis à l'itération ça c'est de me donner de faux résultats. Donc j'données de comptage, 1 cellule à un moment?
Autant que je sache, vous devez le faire par cellule, par ligne. Je ne suis pas à un ordinateur, où je code en ce moment donc je ne peux pas confirmer.
OriginalL'auteur TheQuickBrownFox
Va ce résoudre?
OriginalL'auteur Binu
Dans ma compréhension, vous voulez compter le nombre de lignes qu'une colonne a, à l'EXCEPTION de la ligne d'en-tête.
Si c'est le cas, vous pouvez utiliser la solution fournie par Binu. Juste le modifier pour sauter la ligne où le nom de la colonne est.
vous êtes seulement intéressés à compter le nombre de lignes? ou de stocker les données?
seulement dans le comptage des lignes d'une colonne particulière comme... cloumnA a 5 données que doit être l'o/p et de même pour toutes les colonnes
OriginalL'auteur TheQuickBrownFox