Как определить, что ячейка является пустой, нулевой или пустой при чтении файла Excel

Я прочитал файл excel, чтобы передать ввод для некоторых полей данных. Но когда я запускаю программу, некоторые значения ячеек возвращаются как нулевые, некоторые как пустые. Физически, когда я открываю файл excel, в ячейке нет доступных значений.

Как я могу вручную определить, что ячейка Excel является нулевой или пустой.

В некоторых сценариях мне нужно передать в поля пустые значения. Если ячейка пуста, я не могу передать значения в поля.

Направь меня, чтобы протянуть руку.

Код:

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();
}

}


person Ashok kumar Ganesan    schedule 13.05.2016    source источник


Ответы (1)


Не уверен, почему вы хотите вручную определить тип ячейки, но если вы хотите обрабатывать случаи «null» или «пусто» как один случай, вы можете использовать другую версию Row.getCell, которая принимает второй аргумент, указывающий отсутствует политика ячеек.

so :

 xcell= xrow.getCell(cell);

станет :

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

поэтому в любом случае ячейка имеет значение или пуста, но никогда не равна нулю.

person Alexis Delahaye    schedule 13.05.2016