.xlsx biçiminde bir Excel dosyası var. Çeşitli sütunlar oluşturmak için hücreleri birleştirerek veri depoladım. Bir Java web uygulaması aracılığıyla Excel dosyasını okuyorum ve verilerini bir veritabanına (MySQL) kaydediyorum. Ama birleştirilmiş hücrelerden okurken, sütunlarda ve başlıklarda saklananlarla birlikte null değerler alırım. Apache POI kullanıyorum. Benim kodum:Apache POI kullanarak Java'da Excel'in birleştirilmiş hücrelerinden nasıl okunur?
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();
}
}
}
}
}
Web'de yanıt aradım ancak alakalı bir şey bulamadım.
Birleştirilen hücreler kötü kötüdür ve izin verilmemelidir. Onları kaçının. Excel, genellikle, bu aralığın sol üst hücresindeki birleştirilmiş aralığın içeriğini depolar. Diğer tüm hücreler 0. – teylyn
bunu deneyin http://stackoverflow.com/a/27799327/624003 – Sankumarsingh
Ben biliyorum ama excel için biçim üniversite bölümleri tarafından yapılmaktadır. Projemiz sadece onlardan bilgi almak ve veritabanını güncellemek içindir. Şahsen bunlardan uzak dururdum. – Saber