为什么不能使用Apache POI为行和列设置值?

时间:2015-05-18 18:26:20

标签: java excel apache-poi

我需要为电子表格的特定行和列设置一个值,但是在i = 1 之前我得到一个空指针。我尝试过更改代码,但这个错误一直在发生,我不知道为什么。
有没有人知道为什么会这样?

我的代码

public Workbook build(Planilha planilha) {
    File file = new File(TEMPLATE_PATH);
    if (!file.exists()) {
        Log.error(this, String.format("File %s not exists.", file.getAbsolutePath()));
        throw new NotFoundException("File not exists.");
    }

    Workbook wb = null;
    try (FileInputStream fs = new FileInputStream(file)) {
        wb = new XSSFWorkbook(fs);
        wb = writeMetadatas(planilha, wb);

        Map<String, Integer> header = getHeader(wb);
        Sheet sheet = wb.getSheetAt(0);
        Row row;
        Cell cell;
        for (int i = 0; i <= 10; i++) {
            row = sheet.getRow(i);
            for (int j = 0; j <= 10; j++) {
                cell = row.getCell(j, Row.CREATE_NULL_AS_BLANK);
                if (cell.getColumnIndex() == 0 && row.getRowNum() == 7) {
                    cell.setCellValue("teste");
                }
            }

        }

    } catch (Exception e) {
        Log.error(this, "Erro: Planilha não existe", e);
        System.err.print("Erro");
    }


    String tmpDir = System.getProperty("java.io.tmpdir");
    File f = FileUtil.file(PATH, System.currentTimeMillis() + ".xlsx");
    try {
        FileOutputStream fout = new FileOutputStream(f);
        wb.write(fout);
        fout.flush();
        fout.close();
    } catch (Exception e) {
        Log.error(this, "Erro ao abrir arquivo p escrever.");
    }
    return wb;
}

** NullPointer发生在cell.setCellValue("teste");

我试图设置那个单元格 enter image description here

1 个答案:

答案 0 :(得分:2)

首先,您可以测试行号是否在for循环之外的某个数字,该循环遍历行中的单元格。将if拉出j for圈。

看起来Cell并不存在。 row.getCell(j)正在返回null

如果Cell已经存在,您可以使用MissingCellPolicy来确定是否要返回新的CellCREATE_NULL_AS_BLANK值会为您创建一个空白Cell,如果它尚未存在。