簡體   English   中英

在Java中讀取Excel文件時出現空指針異常

[英]Null pointer exception while reading an excel file in java

我是Java的新手,正在嘗試讀取Excel文件。 包括的罐子: log4j-1.2.17poi-3.9poi-ooxml-3.5-beta5poi-ooxml-3.7-20101029poi-ooxml-schemas-3.7-beta1xmlbeans-2.5.0xmlbeans-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文件的單元格讀入2D數組中,以后再在我的jsp文件中使用。 當我運行它時,它顯示以下錯誤:

at net.codejava.excel.SPACE_CreateThroughExcel.cellToString(SPACE_CreateThroughExcel.java:46)
at net.codejava.excel.SPACE_CreateThroughExcel.read(SPACE_CreateThroughExcel.java:30)
at net.codejava.excel.SPACE_CreateThroughExcel.main(SPACE_CreateThroughExcel.java:64)

我的excel文件是這樣的:

 SPLD_DeviceID_Mfg  SPLD_DeviceID_ModelNo   SPLD_DeviceID_SrNo                                                                              
                                                    4  
                                  apl               3         

我的excel文件中的某些字段為空。 我需要將空值存儲在數組中以備后用。 我只檢查整數和字符串的類型。 如果為空,該怎么辦?

您正在獲取的工作表似乎不存在。 因此,錯誤可能在此行中: XSSFSheet ws = wb.getSheet("SPACE_License"); 進行驗證。 wsnull

當我們沒有將XSSFWorkbook對象參數傳遞給WorkbookFactoryXSSFWorkbook類對象時,有時會從excel讀取數據時出現NUllPointerException錯誤。

它應該是: WorkbookFactory.create(fis) XSSFWorkbook(fis) WorkbookFactory.create(fis)XSSFWorkbook(fis)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM