apache poi, проверка чисел c ячеек для пустых и неверных данных - PullRequest
0 голосов
/ 03 марта 2020

Я читаю файл Excel с некоторыми атрибутами двойного значения, используя APACHE POI, и сопоставляю его с POJO, используя java и пружину.

  public List<Double> readDataFromExcel(MultipartFile file) {
    Workbook workbook = getWorkBook(file);

    List<Double> values = new ArrayList<>();
    for (int i = 0 ; i < workbook.getNumberOfSheets(); i++) {
      Sheet mySheet = workbook.getSheetAt(i);

      Iterator<Row> rows = mySheet.iterator();
      rows.next();
      while (rows.hasNext()) {
        Row row = rows.next();
        if (isRowEmpty(row)) {
          continue;
        }

        values = getItemCellValue(row, file, workbook);
      }
    }
    return values;
  }

Я пытаюсь добиться чтения весь файл сразу проверяет его на наличие пустых чисел c ячеек или неверных данных, перехватывает все ошибки или исключения и отображает их пользователю.

Итак, у меня есть два варианта использования: - проверка данных на пустые Пронумерованные ячейки c - проверьте правильность числовых данных c, тогда мне нужно будет отловить все ошибки проверки в списке, передать его контроллеру для отображения его пользователю.

На данный момент, пустые ячейки преобразуются в 0,0 значения, а строки с неверными данными пропускаются при разборе.

- это метод, который я использую для чтения ячеек и установки своих атрибутов.

 private List<Double> getItemCellValue(Row row, MultipartFile file, Workbook workbook) {
    Item item = new Item();
    List<Double> invalidData = new ArrayList<>();

    try {
      if (row.getCell(0).getCellType() == Cell.CELL_TYPE_NUMERIC) {
        item.setItemNumber((float) row.getCell(0).getNumericCellValue());
      }

      if (row.getCell(1).getCellType() == Cell.CELL_TYPE_NUMERIC) {
        item.setHeight(row.getCell(1).getNumericCellValue());
      }

      if (row.getCell(2).getCellType() == Cell.CELL_TYPE_NUMERIC) {
          item.setWidth(row.getCell(2).getNumericCellValue());
      }

      if (row.getCell(3).getCellType() == Cell.CELL_TYPE_NUMERIC) {
        item.setLength(row.getCell(3).getNumericCellValue());
      }
      item.setFileType(FilenameUtils.getExtension(file.getOriginalFilename()));
      itemRepository.save(item);

    } catch (NullPointerException e) {
      e.printStackTrace();
    }
    return invalidData;
  }

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...