Задать вопрос
vitya_brodov
@vitya_brodov
Java dev

Как спарсить дату из Excel в java?

При попытке спарсить excel-файл и записать в объект, кидает exception о том что
Cannot get a numeric value from a text cell
в поле даты.

Вопрос: как правильно спарсить дату?

excel:
615b10a790fab703427611.png

код:
@Data
public class BaseModel {
    private Date dateTime;
    private int paymentId;
    private String paymentPurpose;
    private int sum;

}


@PostMapping("/import")
    public void mapReapExcelDatatoDB(@RequestParam("file") MultipartFile reapExcelDataFile) throws IOException {
        List<BaseModel> models = new ArrayList<>();
        XSSFWorkbook workbook = new XSSFWorkbook(reapExcelDataFile.getInputStream());
        XSSFSheet worksheet = workbook.getSheetAt(0);
        DataFormatter formatter = new DataFormatter();


        for(int i=1; i<worksheet.getPhysicalNumberOfRows() ;i++) {
            BaseModel baseModel = new BaseModel();

            XSSFRow row = worksheet.getRow(i);

            baseModel.setDateTime(row.getCell(0).getDateCellValue());
            baseModel.setPaymentId((int) row.getCell(1).getNumericCellValue());
            baseModel.setPaymentPurpose(row.getCell(2).getStringCellValue());
            baseModel.setSum((int) row.getCell(3).getNumericCellValue());
            models.add(baseModel);
        }
    }
  • Вопрос задан
  • 293 просмотра
Подписаться 1 Простой 11 комментариев
Пригласить эксперта
Ответы на вопрос 1
@mystifier
Есть вот такой кусок из обработки разных типов полей excel
switch (sh.getRow(r).getCell(cell).getCellType()) {
			case HSSFCell.CELL_TYPE_NUMERIC:
				if (HSSFDateUtil.isCellDateFormatted(sh.getRow(r).getCell(cell))) {
					Date aDate = sh.getRow(r).getCell(cell).getDateCellValue();
					SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
					res = sdf.format(aDate);
				} else {
					sh.getRow(r).getCell(cell).setCellType(Cell.CELL_TYPE_STRING);
					res = sh.getRow(r).getCell(cell).getStringCellValue();
				}
				break;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы