当前位置: 首页 > 知识库问答 >
问题:

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

周飞
2023-03-14

我正在使用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();”)。我想在使用getCellType之前检查给定的单元格是否为空。

int getType=sheet1.getRow(行).getCell(列).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;
    }
}

任何人请帮助。

共有1个答案

甄正信
2023-03-14

如评论中所建议的,您需要创建单元格

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

这对我有用。试试看。

 类似资料:
  • 我正在使用Poi.jar从excel表输入,想知道如何检查单元格是否为空。 现在我使用下面的代码。

  • 问题内容: 我只想检查Pandas系列中的单个单元格是否为null,即检查值是否为。 所有其他答案适用于序列和数组,但不适用于单个值。 我已经试过,,。是否只有一个单一值的解决方案? 问题答案: 尝试这个:

  • 我一直在用POI编写一个代码来将数据输入到Excel表中。首先,我需要遍历一组行,我不确定其中有多少行,可能是10或100行。但我发现末尾有一个空白单元格。在那个空白之后,又有一组行。我不担心第二盘。我需要找到第一盘是否已经结束。 这很让人困惑。现在我有5个用户在我的工作表如下所示。在第5个用户之后有一个空白单元格。我试图打印所有的用户,如果有一个空白停止它。

  • 我需要一个表格,第一行和第二行的单元格合并在一起。 大概是这样的: 桌子的图片(我不能张贴图片)http://i.stack.imgur.com/dAO6j.png 我一直在复习与本主题相关的所有问题,并找到了一些将网格跨度应用于单元的答案,但我找不到真正的解决方案。 以下是我从谷歌和本网站获得的示例代码: 我从这段代码中得到的信息如下: 我试图用

  • 我有一张excel表。在该表中,如果单元格1不为空,我必须检查单元格2,3,4和5中至少有两个单元格不应为空。如何通过java POI API做到这一点?

  • 在谷歌搜索StackOverflow之后,我还没有找到与这个问题相关的地方。目前我可以将空白单元格读取为空,但一次只能读取一个单元格。所以我必须写这样的东西: 这对我来说不太好,因为我对重复感到不满。我们可以设置返回?