Null Pointer如果我尝试创建新Cell并将数据写入excel,则异常

时间:2017-09-18 14:02:32

标签: java apache selenium

我正在尝试将标题和价格写入excel文件。我正在创建列,但java游戏我在第48行错误'NULL POINTER EXCEPTION',请帮助我什么是主要原因。但是如果我写在第48行,sheet1.getRow(0).createCell(0).getStringCellValue( 'Naqash');然后没有显示Null指针错误。

package codeclasses;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.Test;

public class ReadExcel {

    List<WebElement> title, prices;

    @Test

    public void test() throws IOException {

        System.setProperty("webdriver.chrome.driver", "h:\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("disable-infobars");
        options.addArguments("--start-maximized");
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://themeforest.net/search/education?referrer=homepage&utf8=%E2%9C%93");

        title = driver.findElements(By.xpath("//h3[@class = 'product-list__heading']/a"));

        prices = driver.findElements(By.xpath("//p[@class='product-list__price-desktop']"));


        File src = new File("./file/Book1.xlsx");
        FileInputStream file = new FileInputStream(src);

        XSSFWorkbook wb = new XSSFWorkbook(file);
        XSSFSheet sheet1 = wb.getSheetAt(0);

        for (int i = 0; i < 30; i++) {
            int j = 0;

            if(sheet1.getRow(i+1)==null){
(48)        sheet1.getRow(i+2).createCell(j).setCellValue("Naqash");
            sheet1.getRow(i+2).createCell(j+1).setCellValue("Zafar");
            }
            else{

                System.out.println("Cant find the scene");
            }
            FileOutputStream fileout = new FileOutputStream(src);
            wb.write(fileout);

        }

    }

}

2 个答案:

答案 0 :(得分:0)

尝试在向其中插入数据之前创建行和单元格。例如:

int rowIndex = 0;
int columnIndex = 0;
Row row = sheet1.createRow(rowIndex);
Cell cell = row.createCell(columnIndex);
cell.setCellValue("Naqash");

如果您已经在

之前创建了行,则可以按getRow(index)排序

答案 1 :(得分:0)

问题是你永远不会测试单元格是否为空!

if (cell == null)
{
 System.out.println("Cell is Empty in Column:" + cols);

} 
 else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
 {
 //code
 }

一般情况下,处理Cell.getCellType()函数时应小心,因为空单元格可以是null,也可以是CELL_TYPE_BLANK

我希望它有所帮助。