写入Excel文件时获取Null指针异常

时间:2017-01-18 01:29:55

标签: java apache-poi

尝试写入Excel文件时,获取Null指针Exception来自第34行; sheet.createRow(1).createCell(5).setCellValue(" Pass");"不明白为什么会出现这个错误:(

package com.qtpselenium.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.qtpselenium.util.Xls_Reader;

public class ReturnTestCaseResult {

    public static void main(String[] args) {

        String path =System.getProperty("user.dir") + "\\src\\com\\qtpselenium\\xls\\suiteA.xlsx";
        /*   Xls_Reader xlsr = new Xls_Reader(System.getProperty("user.dir") + "\\src\\com\\qtpselenium\\xls\\suiteA.xlsx");
           ReportDataSetResult(xlsr, "TestCaseA1", 3, "Pass" , path);*/

         ReportDataSetResult("TestCaseA1", path);
    }


    public static void ReportDataSetResult( String TestCaseName , String path){


        System.out.println(TestCaseName +"----"+ path);
          try {
            FileInputStream fileinp = new FileInputStream(path);
              XSSFWorkbook workbook = new XSSFWorkbook();

             XSSFSheet sheet = workbook.getSheet(TestCaseName);

              sheet.createRow(1).createCell(5).setCellValue("Pass");

              FileOutputStream fileout = new FileOutputStream(path);
              workbook.write(fileout);
              fileout.close();



        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }




    }

}

2 个答案:

答案 0 :(得分:1)

您已使用no arg构造函数创建工作簿:

XSSFWorkbook workbook = new XSSFWorkbook();

表示工作簿中没有工作表。这意味着您的工作表变量将为null。我想你想将FileInputStream fileinp传递给工作簿构造函数,以便它从现有文件中读取?

XSSFWorkbook workbook = new XSSFWorkbook(fileinp);

否则,您需要在工作簿中创建一个名为TestCaseName的工作表,然后才能开始向其中添加行。

答案 1 :(得分:0)

也许,row(1)为null,您可以尝试先创建它。