Ho un file Excel in formato .xlsx. Ho memorizzato i dati unendo le celle per formare varie colonne. Sto leggendo il file Excel tramite un'applicazione web Java e salvando i suoi dati in un database (MySQL). Ma quando leggo da celle unite ottengo valori nulli insieme a ciò che sono memorizzati nelle colonne così come le intestazioni. Sto usando Apache POI. Il mio codice è:Come leggere dalle celle unite di Excel in Java usando il POI di Apache?
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();
}
}
}
}
}
Ho cercato risposte nel web ma non ho trovato nulla di rilevante.
Le celle unite sono pessime e non dovrebbero essere consentite. Evitalo. In genere, in Excel verrà archiviato il contenuto di un intervallo unito nella cella in alto a sinistra di tale intervallo. Tutte le altre celle restituiscono 0. – teylyn
prova questo http://stackoverflow.com/a/27799327/624003 – Sankumarsingh
Lo so, ma il formato per l'excel è stato creato dai dipartimenti del college. Il nostro progetto è semplicemente prendere informazioni da loro e aggiornare il database. Personalmente avrei evitato quelli. – Saber