Comment composer avec des cellules vides d'excel fichiers java
Je fais un programme où je suis de la lecture des données à partir de fichiers excel et de les stocker dans des tables. J'ai fait le programme à l'aide d'Apache POI et fonctionne très bien. Mais lorsque les fichiers ont des cellules vides comme l'un ici j'ai quelques problèmes. Le programme d'ignorer les blancs et lire les données. Quelqu'un pourrait-il m'aider comment je ferais? Je sais qu'il y a plusieurs posts à ce problème mais je n'ai pas trouvé quelque chose d'utile pour moi.
Le code pour la lecture des données à partir de fichier excel est le ci-dessous. Comme vous pouvez le voir, j'ai 3 types de données. Comment je donnerais l'option de CELLULE VIDE?
//Create an ArrayList to store the data read from excel sheet.
List sheetData = new ArrayList();
FileInputStream fis = null;
try {
//Create a FileInputStream that will be use to read the
//excel file.
fis = new FileInputStream(strfullPath);
//Create an excel workbook from the file system
HSSFWorkbook workbook = new HSSFWorkbook(fis);
//Get the first sheet on the workbook.
HSSFSheet sheet = workbook.getSheetAt(0);
//store the data read on an ArrayList so that we can printed the
//content of the excel to the console.
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();
List data = new ArrayList();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
data.add(cell);
}
sheetData.add(data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
fis.close();
}
}
showExcelData(sheetData);
}
private static void showExcelData(List sheetData) {
//LinkedHashMap<String, String> tableFields = new LinkedHashMap();
for (int i = 0; i < sheetData.size(); i++) {
List list = (List) sheetData.get(i);
for (int j = 0; j < list.size(); j++) {
Cell cell = (Cell) list.get(j);
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
System.out.print(cell.getNumericCellValue());
} else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
System.out.print(cell.getRichStringCellValue());
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
System.out.print(cell.getBooleanCellValue());
} else if (cell.getCellType()== Cell.CELL_TYPE_BLANK ){
System.out.print(cell.toString());
}
if (j < list.size() - 1) {
System.out.print(", ");
}
}
System.out.println("");
}
}
}
Aussi j'ai lu sur workbook.setMissingCellPolicy(HSSFRow.RETURN_NULL_AND_BLANK);
. Cela pourrait-il m'aider avec mon problème?
Mon programme serait de lire ces données et de les stocker dans des tables. Si il saute les cellules vides, puis les données ne serait pas stocké correctement. Je voudrais vous lire ce vide cellule vide de la chaîne, par exemple, et continuer dans le prochain.
OriginalL'auteur dedmar | 2013-05-17
Vous devez vous connecter pour publier un commentaire.
VOTRE MÉTHODE:
Explication:
int maxNumOfCells = sheet.getRow(0).getLastCellNum();
- Cette ligne sera assurez-vous que vous étiez en mesure d'obtenir le nombre de colonnes. À l'aide de la Ligne de la méthode.getLastCellNum()
sur les lignes suivantes sera le résultat à nombre inattendu. Exemple sur votre sur la ligne 3 de votre feuille de calcul, la méthode sera de retour 2 à partir de la prochaine valeur est null.Boucle dans les cellules. À partir de la cellule 0 (Base 0) pour le dernier numéro de la cellule. Si la cellule a été trouvé
null
, fondamentalement, il pourrait créer de la cellule avec unblank
valeur. Enfin, l'ajout de lacell
à votre Liste.OriginalL'auteur Michael Ardan
Une autre solution si vous ne connaissez pas la taille de votre feuille de calcul est de faire une boucle par de ligne et de colonne et de comparer l'indice de ligne et de colonne avec la précédente vous analysée. Si l'incrément est plus d'un, vous allez créer le manque des cellules intermédiaires.
OriginalL'auteur user899157