我试图使用for循环按行写入数据,我需要定期更改数据,为此我正在进行准化

时间:2019-01-29 18:24:36

标签: java excel apache-poi

我试图通过迭代行在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 :(得分:0)

为了避免异常,您需要在访问其值之前检查单元格类型。在您的情况下,似乎该单元格有时不包含数字值。因此,在单元格上调用getCellType()并根据其返回类型(字符串或数字)调用适当的方法(对于字符串-getStringCellValue()和数字-getNumericCellValue()