2016-07-11 6 views
0

Ich bin neu in Java und ich versuche, eine Excel-Datei zu lesen. Gläser enthalten: 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.0Null-Zeiger-Ausnahme beim Lesen einer Excel-Datei in Java

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

Dies ist mein Code. Ich versuche, die Zellen der Excel-Datei in ein 2D-Array zu lesen, das ich später in meiner JSP-Datei verwenden möchte. Wenn ich es laufen zeigt es die folgenden Fehler:

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) 

Meine Excel-Datei so etwas wie dieses:

SPLD_DeviceID_Mfg SPLD_DeviceID_ModelNo SPLD_DeviceID_SrNo                    
                4 
            apl    3   

Einige Felder in meiner Excel-Datei leer sind. Ich muss den leeren Wert in meinem Array für die spätere Verwendung speichern. Ich überprüfe nur die Typen für Integer und String. Was tun bei Null?

+1

Mögliche Duplikat [? Was für eine Nullpointer ist, und wie kann ich es beheben] (http://stackoverflow.com/questions/218384/what-is-a- nullpointerexception-and-how-do-i-fix-it) – Fildor

+0

gibt es irgendeine Bedingung für Nullwert in Zelle – yash

+0

List komplette Stacktrace. –

Antwort

1

Es scheint, dass das Blatt, das Sie holen, nicht existiert. Also wahrscheinlich ist der Fehler in dieser Zeile: XSSFSheet ws = wb.getSheet("SPACE_License");. Überprüfe es. ws kommt als null heraus.

+0

nachdem es bei net.codejava.excel.SPACE_CreateThroughExcel.cellToString (SPACE_CreateThroughExcel.java:46) \t bei net.codejava.excel.SPACE_CreateThroughExcel.read (SPACE_CreateThroughExcel.java Korrektur: 30) \t bei net.codejava.excel.SPACE_CreateThroughExcel.main (SPACE_CreateThroughExcel.java:64) bleibt immer noch – Jab

+0

bitte posten Sie es als eine separate Frage, es würde Sei zu unordentlich, um es hier zu diskutieren, oder redigiere nur diese Frage. –

+0

@Rachana Sie sollten sich den Code genau ansehen, die Zelle, die Sie an die cellToString-Methode übergeben, ist null. Ich würde vorschlagen, dass Sie durch java doc der Funktionen gehen, die Sie verwenden. Sie sollten überprüfen, ob die Zelle null ist. –

-2

Einige Male erhalten NUllPointerException Fehler beim Lesen von Daten aus Excel, wenn wir keinen FIS-Objektparameter an WorkbookFactory oder XSSFWorkbook Klassenobjekt übergeben.

es sein sollte: WorkbookFactory.create(fis) oder XSSFWorkbook(fis)

Verwandte Themen