2016-04-29 4 views
0

Ich bekomme null in 2D-Array. Wenn ich Werte von Array aus in Aufruf der Methode (hallo) Ich korrekte Werte erhalten, aber in Rufenen (Hauptverfahren) I für die zweiten Wert null bin immer wenn ausgedrucktNullen in zweiten Wert von 2D-Array in Java mit Apache Poi

Im Anschluss an dem Programm

package TestngPackage; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class MyReadExcel { 

    public static XSSFWorkbook workbook; 

    public static String[][] hello() throws IOException{ 

     FileInputStream fis = new FileInputStream(new File("F:\\TestExcel\\Test.xlsx")); 
     workbook = new XSSFWorkbook(fis); 
     XSSFSheet sheet = workbook.getSheetAt(0); 
     String s[][] = new String[2][2]; 

     for (int x = 0; x < sheet.getLastRowNum() + 1; x++){ 
      Row row=sheet.getRow(x); 

      for (Cell c : row){ 
       int y = 0; 
       s[x][y] = c.getStringCellValue(); 
       //System.out.println(s[x][y]); 
       y++; 
      }   

     } 

     workbook.close(); 
     fis.close(); 
     return s; 
    } 

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

     String str[][]; 
     str = hello(); 

     for (int x = 0; x < str.length; x++){ 

      for (int y = 0; y < str[x].length; y++){ 
       System.out.println(str[x][y]); 
      } 

      System.out.println(); 
     } 

    } 

} 
+0

müssen Sie y * int = 0 setzen; * außerhalb * für (Cell C: Reihe) {* Schleife und versuchen Sie es –

+0

Nur eine kurze freundliche Spitze für Sie arbeiten, könnten Sie es finden viel einfacher zu debuggen, wenn Sie einen Style Guide wie [hier hier] (https://google.github.io/styleguide/javaguide.html) befolgen. Es macht Ihren Code viel einfacher zu lesen und Fehler werden auffallen! –

+0

Danke @MatthewCliatt –

Antwort

3

Ich glaube, du hast es falsch gemacht, int y = 0 zu setzen; Inside-Schleife, also jedes Mal, wenn Ihre y-Variable Initialisierung mit 0-Wert, weshalb Wert überschreiben mit 0-Element. Deshalb können Sie das 2. Element als Null in Ihrer Schleife finden.

so müssen Sie setzen int y = 0; außerhalb von für (Zelle c: Zeile) für Schleife wie in meinem folgenden Beispiel.

for (int x=0; x<sheet.getLastRowNum()+1; x++){ 
      Row row=sheet.getRow(x); 
      int y=0; 
      for (Cell c : row){ 
       // int y=0; every time its init with 0 so value would be override on every time 
       s[x][y]=c.getStringCellValue(); 
//    System.out.println(s[x][y]); 
       y++; 
      }   
     } 
+0

Vielen Dank, es hat funktioniert –