Java 从xlsx文件读取时出现NullPointerException
我从Excel文件中读取数据,稍后我将其放入同一Java程序中的MySQL数据库中。 我在向数据库添加数据时遇到问题:Eclipse一直显示NullPointerException错误。 我使用了getLastRowNum(),它还计算了填充单元格之后的一些空单元格。此代码修复了此问题(这里我只计算填充单元格的数量,并使用此代码而不是最后一行编号):Java 从xlsx文件读取时出现NullPointerException,java,mysql,excel,nullpointerexception,Java,Mysql,Excel,Nullpointerexception,我从Excel文件中读取数据,稍后我将其放入同一Java程序中的MySQL数据库中。 我在向数据库添加数据时遇到问题:Eclipse一直显示NullPointerException错误。 我使用了getLastRowNum(),它还计算了填充单元格之后的一些空单元格。此代码修复了此问题(这里我只计算填充单元格的数量,并使用此代码而不是最后一行编号): int rows=Sname.getLastRowNum(); int rows2=0; 对于(int kk=1;kk我认为你的for应该从0开始
int rows=Sname.getLastRowNum();
int rows2=0;
对于(int kk=1;kk我认为你的for
应该从0
开始,而不是从1
开始,然后转到rows-1
或者Sname.getLastRowNum();
或者Sname.getRow(kk)
正在抛出NPE。确保你已经初始化Sname
还可以查看for循环:
for(int kk=1;kk我认为问题在于循环的极限。它应该转到kk
而不是kk,我认为您提供的代码将保持在一个无止境的循环中,因为kk
变量不会沿着for循环更新。这是实际的代码吗?kk不会在for循环结束时更新吗?for中的“k++”(int kk=1;kNo。你有int kk=1;kk哦,是的,在我的程序中它说kk,我在这里输入错误,对不起。我有kk的错误,我现在将更改它。如果我将行更改为100,我不会得到NPEYes,我知道这一点。我从第1行开始,因为第0行包含每个列的滴度,对于kk=rows
,它不会返回null
?C因为如果它在这里出现,你就可以得到你的NPE
。即使我把kkWell放进去,如果你的工作表中没有空行,这可能是一个问题,你可以尝试调试程序。你肯定会找到问题的根源。“k”输入错误,在程序中它说“kk”。XSSFSheet Sname=workbook.getSheetAt(0);-->这就是我初始化Sname的方法,它可以打印出最后一行的编号,因此那里没有空值。我如何查看Sname.getRow(kk)是否抛出NPE,以及如何修复此问题?在这种情况下,对Sname调用的两个方法之一必须返回空值或抛出NPE。
int rows = Sname.getLastRowNum();
int rows2 = 0;
for(int kk = 1; kk<= rows; kk++)
{
XSSFRow row = Sname.getRow(kk);
XSSFCell cell = row.getCell(0);
if(cell != null)
{
rows2++;
}
}