2016-07-11 8 views
0

저는 Java를 처음 사용하며 Excel 파일을 읽으려고합니다. 항아리 포함 : log4j-1.2.17는, poi-3.9는, poi-ooxml-3.5-beta5poi-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(); 
    } 
} 

이 내 코드입니다. 나는 나중에 내 JSP 파일에서 사용하고자하는 2D 배열로 Excel 파일의 셀을 읽으려고합니다. 내가 그것을 실행하면 다음과 같은 오류를 보여줍니다

SPLD_DeviceID_Mfg SPLD_DeviceID_ModelNo SPLD_DeviceID_SrNo                    
                4 
            apl    3   

내 엑셀 파일의 일부 필드

가 비어 :

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) 

내 엑셀 파일은 다음과 같은 것입니다. 나중의 사용을 위해 배열에 빈 값을 저장해야합니다. 정수 및 문자열 형식 만 검사합니다. null의 경우 어떻게해야합니까?

+1

[? NullPointerException이 무엇인가, 나는 그것을 해결 어떻게] (의 가능한 중복 http://stackoverflow.com/questions/218384/what-is-a- nullpointerexception-and-how-do-i-fix-it) – Fildor

+0

셀에 null 값이있는 조건이 있습니까 – yash

+0

List complete stacktrace. –

답변

1

가져 오는 시트가 존재하지 않는 것 같습니다. 아마도이 오류는 다음 줄에 있습니다 : XSSFSheet ws = wb.getSheet("SPACE_License");. 그것을 확인하십시오. wsnull으로 나옵니다.

+0

net.codejava.excel.SPACE_CreateThroughExcel.cellToString (SPACE_CreateThroughExcel.java:46) net.codejava.excel.SPACE_CreateThroughExcel.read에서 \t (SPACE_CreateThroughExcel.java 그것을 보정 후 : 30) \t at net.codejava.excel.SPACE_CreateThroughExcel.main (SPACE_CreateThroughExcel.java:64) 여전히 남아 있습니다 – Jab

+0

별도의 질문으로 게시하십시오, woul d 여기에서 토론하기에는 너무 지저분하거나 단지이 질문 만 편집하십시오. –

+0

@Rachana cellToString 메서드에 전달할 teh 셀이 null 인 코드를주의 깊게 살펴 봐야합니다. 나는 당신이 사용하는 함수의 자바 의사를 통해 갈 것을 제안합니다. 셀이 null인지 확인해야합니다. –

-2

fis 개체 매개 변수를 WorkbookFactory 또는 XSSFWorkbook 클래스 개체로 전달하지 않았을 때 Excel에서 데이터를 읽는 동안 때로는 NUllPointerException 오류가 발생합니다.

이 있어야한다 : WorkbookFactory.create(fis) 또는 XSSFWorkbook(fis)

관련 문제