我需要为电子表格的特定行和列设置一个值,但是在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");
我试图设置那个单元格
答案 0 :(得分:2)
首先,您可以测试行号是否在for
循环之外的某个数字,该循环遍历行中的单元格。将if
拉出j
for
圈。
看起来Cell
并不存在。 row.getCell(j)
正在返回null
。
如果Cell
已经存在,您可以使用MissingCellPolicy
来确定是否要返回新的Cell
。 CREATE_NULL_AS_BLANK
值会为您创建一个空白Cell
,如果它尚未存在。