2016-03-29 11 views
-2

私はセレンのWebDriverの初心者です。 これは、Excelシートにデータを書き込むためのセレンコードの一部ですが、コードを実行している間にNullPointer Exceptionを取得しています...理由は何でしょうか?(Excelシートは閉じた状態です、コンパイル時に問題ありません)Excelにデータを書き込んでヌルポインタ例外を表示

コード:

FileInputStream fis=new FileInputStream("C:\\Users\\Desktop\\Book1.xlsx"); 

Workbook wb=WorkbookFactory.create(fis); 
Sheet sh=wb.getSheet("Sheet1"); 

for(int i=0;i<=20;i++) { 
    Row row=sh.getRow(i); 

    for(int m=0;m<=20;m++) { 
     Cell cell=row.createCell(m); 

     cell.setCellType(cell.CELL_TYPE_STRING); 
     cell.setCellValue("good"); 

     FileOutputStream fos=new FileOutputStream("C:\\Users\\Desktop\\Book1.xlsx"); 

     wb.write(fos); 
     fos.close(); 
    } 
} 

System.out.println("Excel File Written"); 
+0

こんにちは、このコードを実行してください。http://www.codejava.net/coding/how-to-read-excel-files-in-java-using-apache-poi –

+0

どのオブジェクトがヌルですか? – Gagravarr

+0

推測を避けるために、Excelファイルの内容を添付したり、どこかにアップロードしたりできますか? –

答えて

0

あなたはXLSXファイル内の行にアクセスしていたが、その行がnullの場合も、そうcreaterowする関連項目GetRowを置き換えることが起こる:

Row row=null; 

for(int i=0;i<=20;i++) { 
    if(sh.getRow(i) != null) { 
     row = sh.getRow(i);} 
    else { 
     row = sh.createRow(i); 
    } 
} 
+0

。今はうまく動作しています:) Workbook wb = WorkbookFactory.create (fis); シートsh = wb.getSheet( "Sheet1"); .................ここで実際にアップキャストが起こっていますか? – sreenath

+0

私が答えて言ったように、空白の行の一部はnullになる可能性があり、nullの場合はチェックせずに直接アクセスすることはできません。 null行を直接アクセスしようとすると、確実にnullポインタ例外が発生します。あなたはそこに行を作成する必要があります、あなただけがセルを作成することができます。 –

1

Excelは、その後、完全に空白の場合あなたはnullポインタの例外を取得しますので、 eは、コードを実行する前に少なくとも1つのセルのデータです。

関連する問題