gpt4 book ai didi

java - 使用 apache poi api 修改 Excel 中的工作表时遇到问题

转载 作者:行者123 更新时间:2023-12-02 00:28:47 25 4
gpt4 key购买 nike

我正在使用 Java 的 Apache poi api 写入 Excel 工作簿中的现有工作表。我的问题是,在我尝试编辑的工作表中,如果该行中的任何单元格不为空,即其中包含某种值,则程序运行正常并编辑该行中的任何特定单元格。例如,如果我的工作表中的单元格 (1,1) 包含一个值,则程序在编辑同一行的其他单元格(例如 (1,5) 或 (1,12) 等)时不会出现问题。但是,如果我的整行都是空的,即所有单元格都包含 null,那么代码会抛出一个空指针异常,我不知道如何删除该异常。这是我在项目中使用的 write 方法,用于在 excel 类中写入特定单元格。

public void write(int row, int column, String label) {


try {
InputStream inp = new FileInputStream(filePath);
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Row sheetRow = sheet.getRow(row);
Cell cell = sheetRow.getCell(column);
//String cellContents = cell.getStringCellValue();
// //Modify the cellContents here
// // Write the output to a file
if (cell == null) {
cell = sheetRow.createCell(column);
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(label);
FileOutputStream fileOut = new FileOutputStream(filePath);
wb.write(fileOut);
fileOut.close();
} catch (IOException ex) {
Logger.getLogger(ExcelManipulator.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvalidFormatException ex) {
Logger.getLogger(ExcelManipulator.class.getName()).log(Level.SEVERE, null, ex);
}
}

java 在编辑未触及的单元格(即空行)时抛出的异常是:

Exception in thread "main" java.lang.NullPointerException
at seleniumtest.ExcelManipulator.write(ExcelManipulator.java:76)
at seleniumtest.SeleniumTest.main(SeleniumTest.java:28)

Java 结果:1

任何人都可以帮助我摆脱这个问题,以便我的代码即使整行为空也可以写入一个单元格吗?谢谢

最佳答案

我不知道 NPE 到底在哪里抛出,但我很确定 ExcelManipulator.java 的第 76 行是这一行: Cell cell =sheetRow.getCell(column);?

API for Sheet 中所述如果您请求未定义的行,您会得到一个 null - 如果整行都是空的话,就是这种情况。

因此,您可以在上述行之前插入 if(sheetRow == null){sheetRow = Sheet.createRow(row);} ,应该没问题。

关于java - 使用 apache poi api 修改 Excel 中的工作表时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9550778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com