在java中读取excel文件时出现空指针异常

在java中读取excel文件时出现空指针异常,java,excel,apache-poi,Java,Excel,Apache Poi,我是Java新手,正在尝试读取excel文件。 JAR包括:log4j-1.2.17,poi-3.9,poi-ooxml-3.5-beta5,poi-ooxml-3.7-20101029,poi-ooxml-schemas-3.7-beta1,xmlbeans-2.5.0,xmlbeans-xmlpublic-2.4.0 package net.codejava.excel; import java.io.*; import org.apache.poi.ss.usermodel.Workb

我是Java新手,正在尝试读取excel文件。 JAR包括:
log4j-1.2.17
poi-3.9
poi-ooxml-3.5-beta5
poi-ooxml-3.7-20101029
poi-ooxml-schemas-3.7-beta1
xmlbeans-2.5.0
xmlbeans-xmlpublic-2.4.0

package net.codejava.excel;

import java.io.*;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class SPACE_CreateThroughExcel{
    public static void main(String[] args) throws Exception{

        SPACE_CreateThroughExcel create = new SPACE_CreateThroughExcel();
        create.read();
    }
    public void read(){

        try {           
            String excelFilePath = "C:/Users/Rachana/workspace/SPACEOM/WebContent/Data/Data.xlsx";
            InputStream is = new FileInputStream(new File(excelFilePath));
            XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(is);
            XSSFSheet ws = wb.getSheetAt(0);

            int rowNum = ws.getLastRowNum() + 1;
            System.out.println(rowNum);
            int colNum = ws.getRow(0).getLastCellNum();

        String[][] data = new String[rowNum][colNum];
        for(int i=0; i< rowNum; i++){
            XSSFRow row  = ws.getRow(i);
                for(int j=0;j<colNum;j++){
                    XSSFCell cell = row.getCell(j);
                    String value = cellToString(cell);
                    data[i][j] = value;
                    System.out.println(value);
                }
        }

        } catch (Exception e) { 
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static String cellToString(XSSFCell cell){
        int type;
        Object result;
        type = cell.getCellType();

        switch(type){
            case 0:
                result = cell.getNumericCellValue();
                break;
            case 1:
                result = cell.getStringCellValue();
                break;
            default:
                throw new RuntimeException("No support");

        }
        return result.toString();
    }
}
我的excel文件如下所示:

 SPLD_DeviceID_Mfg  SPLD_DeviceID_ModelNo   SPLD_DeviceID_SrNo                                                                              
                                                    4  
                                  apl               3         

我的excel文件中的某些字段为空。我需要将空值存储在数组中以供以后使用。我只检查整数和字符串的类型。如果为空,该怎么办?

您正在获取的工作表似乎不存在。因此,错误可能在这一行:
XSSFSheet ws=wb.getSheet(“SPACE_许可证”)。一定要核实一下<当我们没有将fis对象参数传递给
WorkbookFactory
XSSFWorkbook
类对象时,从excel读取数据时,代码>ws
显示为
null

有时会出现
NUllPointerException
错误


它应该是:
WorkbookFactory.create(fis)
XSSFWorkbook(fis)

的可能副本cellList complete stacktrace中是否有空值的条件。我已经列出了完整的stacktrace。net.codejava.excel.SPACE_CreateThroughExcel.cellToString(SPACE_CreateThroughExcel.java:46)net.codejava.excel.SPACE_CreateThroughExcel.read(SPACE_CreateThroughExcel.java:31)net.codejava.excel.SPACE_CreateThroughExcel.main(SPACE_CreateThroughExcel.java:63)中的java.lang.NullPointerException在net.codejava.excel.SPACE_CreateThroughExcel.cellToString(SPACE_CreateThroughExcel.java:46)在net.codejava.excel.SPACE_CreateThroughExcel.read(SPACE_CreateThroughExcel.java:30)在net.codejava.excel.SPACE_CreateThroughExcel.main(SPACE_CreateThroughExcel.java:64)处更正后,请将其作为单独问题发布,在这里讨论这个问题太麻烦了,或者只编辑这个问题。@Rachana您应该仔细查看代码,因为您传递给cellToString方法的单元格为空。我建议您仔细阅读正在使用的函数的java文档。您应该检查单元格是否为空。
 SPLD_DeviceID_Mfg  SPLD_DeviceID_ModelNo   SPLD_DeviceID_SrNo                                                                              
                                                    4  
                                  apl               3