2014-02-20 2 views
0

Excel 파일을 읽으려면 org.apache.poi.ss.usermodel의 XSSFWorkbook을 사용하려고합니다. 어떤 이유로 Sheet 메서드 중 하나에서 데이터를 가져 오려고 할 때 널 포인터 예외가 발생합니다. 나는 자바 프로그래밍에 익숙하지 않고 매우 근본적인 것일 수도있다.XSSFWorkbook 시트 인터페이스를 사용하면 Java Null 포인터 예외가 발생합니다.

import org.apache.poi.ss.usermodel.*; 
public class ReadFile { 

public static void main(String[] args) throws InterruptedException, IOException { 

    File f = new File("C:/Users/munish/Documents/Training/Selenium/sample.xlsx"); 
    FileInputStream file = new FileInputStream(f); 
    XSSFWorkbook workbook = new XSSFWorkbook(file); 
    Sheet sheet = workbook.getSheetAt(0); 

    int rowsCount = sheet.getPhysicalNumberOfRows(); 
    System.out.println("Total number of rows: " + (rowsCount + 1)); 
    for (int i = 0; i <= rowsCount; i++) { 
     Row row = sheet.getRow(i); 
     int colCounts = row.getPhysicalNumberOfCells(); 
     System.out.println("Total number of Cols: " + colCounts); 
     for (int j = 0; j < colCounts; j++) { 
      Cell cell = row.getCell(j); 
      System.out.println("[" + i + "," + j + "]=" + cell.getStringCellValue()); 
     } 
    } 
+0

하지? 그것이 던지는 선을 강조하는 것은 역시 도움이 될 것입니다. – Pedantic

+0

널 포인터 예외가 'int rowsCount ...'라인에서 발생했습니다. – user3334428

+0

그러면 workbook.getSheetAt (0)은 null을 반환합니다. 왜 그런가? – Pedantic

답변

-2

귀하의 for 루프가 있어야한다 :

for (int i = 0; i < rowsCount; i++) 

가 NPE 어디

for (int i = 0; i <= rowsCount; i++) 
+0

감사합니다. 여기에 맞춤법 문제가 있다고 생각하지 않습니다. 어쨌든, 널 포인터 예외가 2 줄 넘게 던져지기 때문에 우리는이 줄에 도착하지 않습니다. – user3334428

+0

위 질문에서'rowsCoutn'은 어디에서 볼 수 있습니까? – TylerH

+0

그건 내 실수 였어. 내 대답은 gravityplanx