我最近在使用Apache POI用于Excel文件的.getCell()方法时遇到了麻烦。如果我尝试实现单元格newCell=sheet.getRow(rowNumber).getCell(columnNumber)或类似的内容,我总是得到错误
Exception in thread "main" java.lang.NullPointerException
at ExcelWriter.getWorkbook(ExcelWriter.java:80)
at Gui2.<init>(Gui2.java:93)
at Main.main(Main.java:24)
它指向在单元格为NULL的情况下实现.getCell()方法的行。我的代码应该确定单元格是否为空,如果为真,然后打印一些内容,但似乎单元格为空会导致程序出错。但是,这种情况只在某些情况下发生,我发现如果创建一个sheet,并通过for循环在每一行中创建一个新单元格,就可以读取一个空白单元格并确定它是空白的。但是,如果我在该工作表中的任何单元格中键入一个值,然后尝试读取另一个空单元格,则会再次收到错误消息。我不明白为什么只有当我尝试读取空单元格时才会出现这个错误,但我需要在程序中循环遍历它们。下面是我的代码片段,以及导致错误的原因。
public void getWorkbook(String fileName)
{
try
{
existingFile = new FileInputStream(new File(fileName));
workbook = new XSSFWorkbook(existingFile);
Sheet newSheet = workbook.getSheet("Test3");
//createSheet("Test3", workbook);
Cell newCell = newSheet.getRow(1).getCell(1);
if(newCell == null)
{
System.out.println("Null");
}
else if(newCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
{
System.out.println("Number");
}
//System.out.println(newCell.getStringCellValue());
}
catch (FileNotFoundException e) //Couldn't find file
{
e.printStackTrace();
}
catch (IOException e) //Couldn't create workbook
{
e.printStackTrace();
}
}
为了清楚起见,代码中引用的单元格B2为空。然而,A1不是,但当我读到A1时,系统会按预期打印“数字”。
正如Apache POI Javadocs中所解释的,sheet.getRow(num)
可以返回null,如果该行从未使用过,因此没有写入文件
正如Apache POI文档中关于迭代行和单元格的内容所述,如果希望循环遍历所有行,然后获取一个特定列,则需要执行以下操作:
// Decide which rows to process
int rowStart = Math.min(15, sheet.getFirstRowNum());
int rowEnd = Math.max(1400, sheet.getLastRowNum());
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row r = sheet.getRow(rowNum);
if (r == null) {
// No entries in this row
// Handle empty
continue;
}
int cn = 1;
Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
if (c == null) {
// The spreadsheet is empty in this cell
} else {
// Do something useful with the cell's contents
}
}
我有包含以下内容的属性文件: 我使用spring配置阅读了以下内容: 但在应用程序开始后,我看到: 我需要,因为我要使用重新启动程序:https://stackoverflow.com/a/3655963/2674303 如何避免这个错误?
我是否遗漏了一些奇怪的设置,会使忽略空白单元格? 最后我编写了一个helper函数,该函数删除了col_n)列。
我是Spring冬眠的新手,但我已经花了一天时间解决这个问题。我还是搞不清楚根本原因是什么,我该怎么办。所以,如果有人能给我一些建议,提前谢谢你。 这里有一个问题,我只是写一个简单的测试类,但是当我运行时,有一个例外: ??: 上下文初始化期间遇到异常-取消刷新 这里是类的源代码: 这是员工。哈佛商学院。xml 这是应用程序ontext.cfg.xml 还有pom。xml 下面是smiple测试类
我正在使用Ionic,我需要发送令牌来获取api数据。下面的代码工作正常 但当尝试从本地存储读取数据时,却无法获取api数据。显示授权错误。我试过的代码是 当console.log((localStorage.get项目('令牌')))尝试打印相同的令牌-"d5213668d34013c9087273a5efab6d39d6d8bfb9"检查两者的类型都给出字符串
我收到错误: 错误类型错误: 无法读取在评估 (webpack-internal:///./node_modules/@angular/common/esm5/http.js:163) 处未定义的属性 “长度”在 Array.forEach () 在 httpHeaders.lazyInit (webpack-internal:///./node_modules/@angular/common/e
我正在尝试将一个项目转换为使用SpringWebFlux,但遇到了一个问题:如何让一些基本的业务逻辑正常工作。我有一个存储库层负责检索/持久化记录,还有一个服务层负责应用程序的业务规则。我想做的(在服务层)是检查给定用户名的用户是否已经存在。如果是这样,我想用一个错误来回应。如果没有,我希望允许插入发生。 我在存储库层调用一个方法,该方法将通过用户名查找用户,如果找不到,它将返回一个空的Mono。