Ich habe eine Excel-Datei im .xlsx-Format. Ich habe Daten gespeichert, indem ich Zellen zu verschiedenen Spalten zusammengeführt habe. Ich lese die Excel-Datei über eine Java-Webanwendung und speichere ihre Daten in einer Datenbank (MySQL). Aber wenn ich aus verbundenen Zellen lese, bekomme ich NULL-Werte zusammen mit dem, was in den Spalten sowie den Headern gespeichert ist. Ich benutze Apache POI. Mein Code ist:Wie liest man aus gemischten Excel-Zellen in Java mit Apache POI?
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();
}
}
}
}
}
Ich suchte nach Antworten im Netz, aber fand nichts relevantes.
Zusammengefasste Zellen sind schlecht schlecht schlecht und sollten nicht erlaubt sein. Vermeide sie. Excel speichert normalerweise den Inhalt eines zusammengeführten Bereichs in der oberen linken Zelle dieses Bereichs. Alle anderen Zellen geben 0 zurück. – teylyn
versuchen Sie es http://stackoverflow.com/a/27799327/624003 – Sankumarsingh
Ich weiß, aber das Format für das Excel wird von College-Abteilungen gemacht. Unser Projekt besteht einfach darin, Informationen von ihnen zu erhalten und die Datenbank zu aktualisieren. Ich persönlich hätte diese vermieden. – Saber