Я пытаюсь записать данные по строкам, используя для цикла, Там регулярно мне нужно изменить данные Для этого я делаю параметризацию - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь записать несколько данных в Excel с помощью итерации строк. Иногда это работает нормально, а иногда - нет.Я хочу перебрать до 12 строк, каждый раз, когда grouID будет получать изменения.Некоторое время он заменяет данные, а иногда выдает ошибку, так как не может получить числовое значение из текста

public void writeData(String GroupID) {
   try {
          File src = new File("File.xls");
          Cell cell = null;
          FileInputStream fis = new FileInputStream(src);
          HSSFWorkbook wb = new HSSFWorkbook(fis);
          HSSFSheet sh1 = wb.getSheetAt(0);

          for (int i = 1; i < 12; i++) {
             System.out.println("Entering into excel sheet");
             cell = sh1.getRow(i).getCell(22);
             System.out.println("Iterating cells");

             if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                String str = NumberToTextConverter.toText(cell.getNumericCellValue());
                System.out.println("**********Before Replacing**********");
                System.out.println(str);
                cell.setCellValue(GroupID);
             } else {
                       System.out.println("We are not entering  numeric data");
             }
        }
        FileOutputStream fout = new FileOutputStream(new File("File.xls"));
        wb.write(fout);
        fout.close();

    } catch (Exception e) {
         System.out.println(e.getMessage());
}

1 Ответ

0 голосов
/ 29 января 2019

Чтобы избежать исключения, вам нужно проверить тип ячейки, прежде чем получить доступ к ее значению.В вашем сценарии кажется, что иногда ячейка не содержит числового значения.Таким образом, вызовите getCellType() для ячейки и на основе ее типа возврата (String или Number) вызовите соответствующие методы (для String - getStringCellValue() и для Number - getNumericCellValue())

...