java - 检查 Apache POI 库中的单元格是否为空

标签 java apache-poi

我正在使用 Java Apache POI 库。在这里,我想在下面的方法(getExcellContent)中检查给定的单元格是否为空。我如何检查?

public String getExcellContent(String sheetName, int row, int col){     
    String data = null;
    sheet1              = wb.getSheet(sheetName);       
    int getType = sheet1.getRow(row).getCell(col).getCellType();
    if(getType == 0) {
        Double data1 = sheet1.getRow(row).getCell(col).getNumericCellValue();
        int x1  =  data1.intValue();
        data = String.valueOf(x1);
    }
    else if(getType == 1) {
        data = sheet1.getRow(row).getCell(col).getStringCellValue();
    }else {
        data = "Nothing";
    }
    return data;        
}

如果传递的单元格为空,如果我使用 getCellType() ("int getType =sheet1.getRow(row).getCell(col).getCellType();"),我将收到 fatal error 。我想在使用 getCellType 之前检查给定的单元格是否为空。

int getType =sheet1.getRow(row).getCell(col).getCellType();

请查看完整代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcellData {
    XSSFWorkbook wb;
    XSSFSheet sheet1;

    public ReadExcellData(String excelPath){        
        try {
            File src            = new File(excelPath);
            FileInputStream fis = new FileInputStream(src);
            wb                  = new XSSFWorkbook(fis);
            sheet1              = wb.getSheet("user");
        } catch (FileNotFoundException e) {         
            e.printStackTrace();
        } catch (IOException e) {           
            e.printStackTrace();
        }
    }

    public String getExcellData(String sheetName, int row, int col){        
        sheet1              = wb.getSheet(sheetName);
        String data = sheet1.getRow(row).getCell(col).getStringCellValue();
        return data;        
    }

    public String getExcellContent(String sheetName, int row, int col){     
        String data = null;
        sheet1              = wb.getSheet(sheetName);       
        int getType = sheet1.getRow(row).getCell(col).getCellType();
        if(getType == 0) {
            Double data1 = sheet1.getRow(row).getCell(col).getNumericCellValue();
            int x1  =  data1.intValue();
            data = String.valueOf(x1);
        }
        else if(getType == 1) {
            data = sheet1.getRow(row).getCell(col).getStringCellValue();
        }else {
            data = "Nothing";
        }
        return data;        
    }

    public int getActualDataType(String sheetName, int row, int col){
        sheet1              = wb.getSheet(sheetName);
        int getType = sheet1.getRow(row).getCell(col).getCellType();
        return getType;
    }

    public Double getExcellNumericData(String sheetName, int row, int col){     
        sheet1              = wb.getSheet(sheetName);
        double data = sheet1.getRow(row).getCell(col).getNumericCellValue();
        return data;        
    }

    public int getRowCount(String sheetName) {
        int rowNum = wb.getSheet(sheetName).getLastRowNum();
        rowNum = rowNum + 1;
        return rowNum;
    }
}

请大家帮忙。

最佳答案

正如评论中所建议的,您需要创建单元格并检查其null值。 您可能需要更改 getExcelContent 方法,如下所示。

 public String getExcellContent(String sheetName, int row, int col){     
        String data = null;
        sheet1  = wb.getSheet(sheetName);  
        XSSFCell gcell=null;
        XSSFRow row1=sheet1.getRow(row);//Create Row.
        if(row1!=null)
        {

        gcell=row1.getCell(col);//Create Cell
        if(gcell!=null)
        {
        int getType = gcell.getCellType();
        if(getType == 0) {
            Double data1 = gcell.getNumericCellValue();
            int x1  =  data1.intValue();
            data = String.valueOf(x1);
        }
        else if(getType == 1) {
            data = gcell.getStringCellValue();
        }else {
            data = "Nothing";
        }
        }
        }
        return data;        
    }

这对我有用。尝试一下。

关于java - 检查 Apache POI 库中的单元格是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34436318/

相关文章:

java - 判断一个数字是否是 Java 中的输入?

java - 如何以用户友好的方式显示 Android 按钮?

java - 在android java中加载资源的最佳方法

java - 从 Apache POI 已弃用的方法创建工作表

java - 代码只能在远程服务器上运行时的良好版本控制实践

java - JPMS 是否支持模块版本?

java - "java.lang.NoSuchMethodError"读取xmlbean时出现异常

java - 使用自定义 TableCellRenderer 导出 JTable

java - 在 Apache POI v3.11 中搜索 HWPF 包

java - 使用java apache poi在列CSV文件中获取中断后的字符串