#java #excel #oop #logic #structure
Вопрос:
У меня есть формат столбца даты, установленный как M/d/гггг в excel, однако, когда я читаю значение ячейки в Java, дата выглядит как «05/января/2021», я не понимаю, что происходит? может ли кто-нибудь помочь мне с тем, что я делаю неправильно?
XSSFWorkbook wb1 = new XSSFWorkbook(fis1); XSSFSheet sheet1 = wb1.getSheetAt(0); //creating a Sheet object to retrieve object Iteratorlt;Rowgt; itr1 = sheet1.iterator(); //iterating over excel file ArrayList recipientids = new ArrayList(); for (Row row : sheet1) { // For each Row. Cell cell = row.getCell(4); // Get the Cell at the Index / Column you want. Cell cell2 = row.getCell(5); CellType type = cell2.getCellType(); if (type == CellType.NUMERIC) { Date date = new Date(); SimpleDateFormat DateFor = new SimpleDateFormat("M/d/yyyy"); String dateString = cell2.toString(); String newdate = dateString.replace("-", "/"); arraylist.add(cell "-" newdate); } }
Однако, когда я пытаюсь отформатировать, я не могу отформатировать/проанализировать исключения.
Комментарии:
1. Больше не используйте
SimpleDateFormat
. Он устарел уже столько лет назад …2. не могли бы вы, пожалуйста, предложить мне обходной путь?
Ответ №1:
Как уже предлагалось, не используйте SimpleDateFormat
или даже Date
. С Java 8 в Java появился новый API даты и времени.
Проверьте следующее, это может помочь:
XSSFWorkbook wb1 = new XSSFWorkbook(fis1); XSSFSheet sheet1 = wb1.getSheetAt(0); //creating a Sheet object to retrieve object Iteratorlt;Rowgt; itr1 = sheet1.iterator(); //iterating over excel file ArrayList recipientids = new ArrayList(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M/d/yyyy"); for (Row row : sheet1) { // For each Row. Cell cell = row.getCell(4); // Get the Cell at the Index / Column you want. Cell cell2 = row.getCell(5); CellType type = cell2.getCellType(); if (type == CellType.NUMERIC) { String dateString = cell2.toString(); LocalDate date = LocalDate.parse(dateString, dateTimeFormatter); System.out.println(date.format(dateTimeFormatter)); // Formats this date using the specified formatter. } }
Комментарии:
1. @NewBond007, это помогло? Дайте мне знать, если что-то будет неясно.