2017-02-04 93 views
0

我收到一個錯誤:「無法從STRING單元格獲得NUMERIC值」,我確信這是因爲單元格爲空。我正在從xlsx讀取數據並將其寫入我的數據庫。有沒有人有一個簡單的方法來跳過空白單元格和進度?Java POI。當空白時跳過單元格

 FileInputStream fileIn = new FileInputStream(filename); 
     Workbook wb = new XSSFWorkbook(fileIn); 
     Sheet sheet = wb.getSheetAt(0); 

     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 


     Row row; 
     for (int i=1; i<=sheet.getLastRowNum(); i++){ 
      row = sheet.getRow(i); 


      pst.setObject(1, row.getCell(0).getNumericCellValue()); 
      pst.setString(2, row.getCell(1).getStringCellValue()); 
      pst.setObject(3, sdf.format(row.getCell(2).getDateCellValue())); 
      pst.setObject(4, sdf.format(row.getCell(3).getDateCellValue())); 
      pst.setString(5, row.getCell(4).getStringCellValue()); 
      pst.setObject(6, sdf.format(row.getCell(5).getDateCellValue())); 
      pst.setDouble(1, row.getCell(0).getNumericCellValue()); 
      pst.execute(); 
         } 


     wb.close(); 
     fileIn.close(); 
     pst.close(); 
     rs.close(); 
loadDataFromDatabase(); 
}catch (SQLException ex){ 
      Logger.getLogger(TestTableController.class.getName()).log(Level.SEVERE,null,ex); 
     }catch (IOException ex){ 
      Logger.getLogger(TestTableController.class.getName()).log(Level.SEVERE,null,ex); 
     } 
} 
+0

[Apache中POI跳過空白Excel細胞]的可能的複製(http://stackoverflow.com/questions/10405557/skipping-blank-excel-cells-in-apache-poi) – Peter

回答

0

由於從Youtube拉姆Alapure對他的幫助。 當我試圖從Excel導入數據時需要記住兩件事。 1.高亮顯示所有空白單元並清除內容。在此之前,我會得到 錯誤無法從STRING單元格獲得NUMERIC值,如果我從getStringCellValue()更改爲getDateCellValue(),我會得到錯誤無法從NUMERIC單元格獲取STRING值。它就像是薛定諤的貓

  1. 對於NullPointerException使用try catch。

以下是我的工作代碼。

FileInputStream fileIn = new FileInputStream(filename); 
     Workbook wb = new XSSFWorkbook(fileIn); 
     Sheet sheet = wb.getSheetAt(0); 

     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 



     Row row; 


    for (int i=1; i<=sheet.getLastRowNum(); i++){ 
      row = sheet.getRow(i); 

      System.out.println(row.getCell(5)); 
      try{ 

        if(row.getCell(5).getDateCellValue() == null){ 
Date date = new Date(); // set any default value 
pst.setObject(6, null); // or you can set it to null if null is allowed i.e. pst.setObject(6, null); 
}else{ 
pst.setObject(6, sdf.format(row.getCell(5).getDateCellValue())); 
        } 


      pst.setObject(1, row.getCell(0).getNumericCellValue()); 
      pst.setString(2, row.getCell(1).getStringCellValue()); 
      pst.setObject(3, sdf.format(row.getCell(2).getDateCellValue())); 
      pst.setObject(4, sdf.format(row.getCell(3).getDateCellValue())); 
      pst.setString(5, row.getCell(4).getStringCellValue()); 
      pst.setObject(6, sdf.format(row.getCell(5).getDateCellValue())); 
      pst.setDouble(7, row.getCell(6).getNumericCellValue()); 

      }catch(NullPointerException NPE) 

      { 

      } 

      pst.execute(); 

    } 


     wb.close(); 
     fileIn.close(); 
     pst.close(); 
     rs.close(); 
loadDataFromDatabase(); 
}catch (SQLException ex){ 
      Logger.getLogger(TestTableController.class.getName()).log(Level.SEVERE,null,ex); 
     }catch (IOException ex){ 
      Logger.getLogger(TestTableController.class.getName()).log(Level.SEVERE,null,ex); 
     } 
      } 
} 
相關問題