How to identify a cell is blank or null or empty w

2019-03-05 04:50发布

问题:

I read a excel file to pass the input for some data fields. But when I run the program, some cell values are returning as null, some as blank.Physically when I open the excel file no value is available in the cell.

How can I identify manually an excel cell is null or blank.

For some scenarios I need to pass the blank values to the fields. If the cell is null I cannot pass the values to the fields.

Guide me to reach out.

Code:

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:

Not sure why you want to identify manually the cell type but if you want to treat cases "null" or "blank" as a single case you can use the other version of Row.getCell, which takes a second argument that specifies the missing cell policy.

so :

 xcell= xrow.getCell(cell);

will become :

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

so in any cases the cell has a value or is blank , but never null.