diff --git a/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java b/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java index 32ea800dcb6f68ccbd2e89d9dfc9a28c79412638..8e447a9cf99d7a365814ab2b9169a048090a90c4 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java +++ b/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java @@ -50,7 +50,7 @@ public class XlsxCalendarProcessor { int[] dayColumns = new int[] { 3, 4, 5, 6, 7 }; - int[] weekStartRows = new int[] { 5, 23, 41, 60, 78, 96 }; + int[] weekStartRows = new int[] { 5, 23, 41, 59, 77, 95 }; int hourColum = 0; int dayOfMonthRowOffset = 0; @@ -67,7 +67,12 @@ public class XlsxCalendarProcessor { Row weekRow = sheet.getRow(weekOffset + dayOfMonthRowOffset); for (int dayColumnOffset : dayColumns) { Cell dayCell = weekRow.getCell(dayColumnOffset); - String dayOfMonth = ((int) dayCell.getNumericCellValue()) + ""; + String dayOfMonth = "0"; + if (dayCell.getCellTypeEnum().equals(CellType.NUMERIC)) { + dayOfMonth = ((int) dayCell.getNumericCellValue()) + ""; + } else { + dayOfMonth = dayCell.getStringCellValue(); + } if (dayOfMonth.length() == 1) { dayOfMonth = "0" + dayOfMonth; } @@ -91,13 +96,18 @@ public class XlsxCalendarProcessor { Cell queryCell = hourRow.getCell(dayColumnOffset); if (queryCell != null) { - String query = queryCell.getStringCellValue(); - - if (query != null && !query.isEmpty()) { - AppointmentEntry entry = parser.parseAppointment(query, hour); - entry.setDay(day); - - result.add(entry); + if (queryCell.getCellTypeEnum().equals(CellType.STRING)) { + String query = queryCell.getStringCellValue(); + + if (query != null && !query.isEmpty()) { + AppointmentEntry entry = parser.parseAppointment(query, hour); + entry.setDay(day); + + result.add(entry); + } + } else if (!queryCell.getCellTypeEnum().equals(CellType.BLANK)) { + logger + .warn("Skipping cell: " + queryCell.getAddress() + ", " + queryCell.getSheet().getSheetName() + ", type: " + queryCell.getCellTypeEnum()); } } } diff --git a/appointment-import/testFiles/calendarExample.xlsx b/appointment-import/testFiles/calendarExample.xlsx index 516d8e548c74f5a7b2e1050b80918e0acfe80fc8..e6ef090b5834afa3e0a9a414c96c3a37c8ae253f 100644 Binary files a/appointment-import/testFiles/calendarExample.xlsx and b/appointment-import/testFiles/calendarExample.xlsx differ