线程异常 "main" java.lang.NullPointerException 调用方法将字符串写入 Excel sheet in JAVA 时出错

Exception in thread "main" java.lang.NullPointerException error when calling a method to write a string into Excel sheet in JAVA

调用方法将字符串写入 Excel sheet in JAVA 时,线程 "main" 出现异常 java.lang.NullPointerException 错误。错误如下

线程 "main" java.lang.NullPointerException 中的异常 ManualVolteCxCreation.ExcelDataReader.writeExcelTestResult(ExcelDataReader.java:51)

从主程序调用 writeExcelTestResult 方法 class 如下所示。

excelDataReader.writeExcelTestResult(startRowIndex, "There are already connections with");

Excel 数据 Reader class 具有初始化 excel 文件、excel 工作簿和 excel sheet 和读取 excel 数据并写入 excel 文件第 7 列的两种方法。 Excel数据Readerclass如下

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDataReader {

    ConfigReader configReader = new ConfigReader();
    File testFilePath;
    FileInputStream fis;
    XSSFWorkbook volteConnections;
    XSSFSheet testDataFile;
    XSSFRow rowTestData; 

    public ExcelDataReader() {

    try {

        testFilePath = new File(configReader.readPropertyValue("excel")); 
        fis = new FileInputStream(testFilePath); 

        // Finds the workbook instance for XLSX file 
        volteConnections = new XSSFWorkbook(fis);   

        // Return first sheet from the XLSX workbook 
        testDataFile = volteConnections.getSheetAt(0);

    } catch (Exception e) {

        e.printStackTrace();

    } 

    }   

    public XSSFRow readExcelRowTestData(int rowIndex) {

        rowTestData = testDataFile.getRow(rowIndex);
        return rowTestData;

    }

    public void writeExcelTestResult(int rowIndex, String testResult) {

        testDataFile.getRow(rowIndex).getCell(7).setCellValue(testResult);

   }


}

我调试并试图找出问题所在,但发现每个变量都已初始化,如下图所示。

有什么建议可以解决这个问题吗?

您只需要先创建单元格,然后调用 setCellValue 方法即可。

为了保存文件,您还需要 FileOutputStream 对象。

所以你可以修改writeExcelTestResult方法如下。

public void writeExcelTestResult(int rowIndex, String testResult) {

          if (cellTestData == null) {

              cellTestData = testDataFile.getRow(rowIndex).createCell(7);

          }

          cellTestData.setCellValue(testResult);
          try {
            fis.close();
            fos = new FileOutputStream(testFilePath);
            volteConnections.write(fos);
            fos.close();
        } catch (IOException e) {

            e.printStackTrace();
        }         

   }