2016-05-13 3 views
0

一部のデータフィールドの入力を渡すためにExcelファイルを読みました。しかし、私がプログラムを実行すると、いくつかのセルの値が空白として返されます。物理的には、Excelファイルを開いたときに値がセルで使用できません。Excelファイルを読み取っているときにセルを識別する方法が空白またはヌルまたは空です

Excelセルが空白または空白であることを手動で識別する方法を教えてください。

いくつかのシナリオでは、空白の値をフィールドに渡す必要があります。 セルがnullの場合、値をフィールドに渡すことはできません。

私に手を差し伸べてください。

コード:

public static void readAllData() throws IOException{ 

    Object result = null; 

    String sheetName = "Testsheet"; 

    String filePathxlsx = "C:/Users/MSTEMP/Documents/Files/Testxssf.xlsx"; 

    try 

    { 

    FileInputStream in = new FileInputStream(filePathxlsx); 

    File file = new File(filePathxlsx); 



    if(file.isFile() && file.exists()){ 

     XSSFWorkbook xworkbook = new XSSFWorkbook(in); 
     XSSFSheet xsheet=xworkbook.getSheet(sheetName); 
     int totalRows = xsheet.getLastRowNum(); 

     for(int row =1; row<totalRows;row++){ 
      xrow=xsheet.getRow(row); 
      int totalCells=xrow.getLastCellNum(); 

      for(int cell =0; cell<totalCells;cell++){ 
       if(xrow != null) 
       { 
        xcell= xrow.getCell(cell); 

        if(xcell!=null) 
        { 
         switch (xcell.getCellType()) { 

          case Cell.CELL_TYPE_NUMERIC:// numeric value in excel 
           if(DateUtil.isCellDateFormatted(xcell)){ 

            Date myDate = xcell.getDateCellValue(); 
            SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy", Locale.US); 
            result = formatter.format(myDate); 
            //System.out.println("Today : " + result); 
           } 
           else{ 
            result = new BigDecimal(xcell.getNumericCellValue()).toPlainString(); 
           } 
           break; 

          case Cell.CELL_TYPE_STRING: // string value in excel 
           result = xcell.getStringCellValue(); 
           break; 

          case Cell.CELL_TYPE_BOOLEAN: // boolean value in excel 
           result = xcell.getBooleanCellValue(); 
           break; 

          case Cell.CELL_TYPE_BLANK: // blank value in excel 
           result = xcell.getStringCellValue(); 
           break; 

          case Cell.CELL_TYPE_ERROR: // Error value in excel 
           result = xcell.getErrorCellValue()+""; 
           break; 
          } 
         } 
         else 
         { 
          System.out.println("Cell is empty"); 
         } 
        System.out.println("Value "+result); 
       } 
       else 
       { 
        System.out.println("Row is empty"); 
       } 
      }  
     } 
    } 
    inputStream.close(); 
} 
catch (Exception ex){ 
    ex.printStackTrace(); 
} 

}

答えて

1

わからない手動での細胞の種類を識別する理由が、あなたは、単一の場合、あなたのように「ヌル」または「ブランク」のケースを扱いたい場合Row.getCellの他のバージョンを使用できます。これは、missing cell policyを指定する2番目の引数をとります。

ので:

xcell= xrow.getCell(cell); 

はなります:

xcell = xrow.getCell(cell, Row.RETURN_NULL_AS_BLANK); 

はとてもいずれの場合も、セルが値を持っているか、空白、決してnullです。

関連する問題