Comment lire de la fusion des cellules d'Excel en Java à l'aide d'Apache POI?

J'ai un fichier Excel en .format xlsx. J'ai des données stockées par la fusion des cellules pour former des différentes colonnes. Je suis de la lecture du fichier Excel via une application web Java et l'enregistrement de ses données à une base de données (MySQL). Mais quand je lis de la fusion des cellules-je obtenir les valeurs null avec ce qui sont stockées dans les colonnes ainsi que les en-têtes. Je suis à l'aide d'Apache POI. Mon code est:

public static void excelToDBLogIN() {
FileInputStream file = null;
Boolean flag = true;
ArrayList<String> rows = new ArrayList<String>();
try {
//here uploadFolder contains the path to the Login 3.xlsx file
file = new FileInputStream(new File(uploadFolder + "Login 3.xlsx"));
//Create Workbook instance holding reference to .xlsx file
XSSFWorkbook workbook = new XSSFWorkbook(file);
//Get first/desired sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
//Iterate through each rows one by one
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
//For each row, iterate through all the columns
Iterator<Cell> cellIterator = row.cellIterator();
String tuple = "";
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
//Check the cell type and format accordingly
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:                            
//int value = new BigDecimal(cell.getNumericCellValue()).setScale(0, RoundingMode.HALF_UP).intValue();
//tuple = tuple + String.valueOf(value) + "+";
DataFormatter objDefaultFormat = new DataFormatter();    
String str = objDefaultFormat.formatCellValue(cell);
tuple = tuple + str + "+";
break;
case Cell.CELL_TYPE_STRING:
tuple = tuple + cell.getStringCellValue() + "+";
break;
case Cell.CELL_TYPE_BLANK:                                                        
tuple = tuple + "" + "+";
break;
}
}
rows.add(tuple);
flag = true;
}
}    
} catch (Exception e) {
e.printStackTrace();
} finally {
if (file != null) {
try {
file.close();
file = null;
} catch (Exception e) {
System.out.println("File closing operation failed");
e.printStackTrace();
}
}                                 
}
}
}

J'ai cherché des réponses sur le web mais ne trouve rien de pertinent.

Des cellules fusionnées sont mauvais mauvais mauvais et ne devraient pas être autorisés. Les éviter. Excel va généralement de stocker le contenu d'une fusion de gamme dans la cellule en haut à gauche de cette plage. Toutes les autres cellules de retour 0.
essayez cette stackoverflow.com/a/27799327/624003
Je sais, mais le format excel est faite par le collège des départements. Notre projet est de simplement aller de l'info et mise à jour de la databse . Personnellement, j'aurais éviter de ceux-ci.
Est-il une raison particulière de cellules fusionnées sont mauvais?
oui. Ils ont bouleversé les choses. Fusion A3 à la D3. Maintenant, essayez de sélectionner C1 à C5. Ou utiliser une boucle pour écrire quelque chose en C1 à C5. Voir pourquoi c'est mauvais?

OriginalL'auteur Saber | 2015-04-16