![](/img/trans.png)
[英]Adding a comment to a cell in an Excel file with Java using jxl library
[英]Reading EXCEL file in Java using jxl
我在jxl库中将xls文件读入Java时遇到问题。
您能告诉我我的代码有什么问题吗? 我附在下面。 wif fillData方法出错。 控制台返回:
Exception in thread "Thread-1" java.lang.NullPointerException
at StudentLogin.fillData(StudentLogin.java:104)
at StudentLogin.<init>(StudentLogin.java:70)
at Login$PBar.run(Login.java:103)
at java.base/java.lang.Thread.run(Unknown Source)
预先感谢您的帮助。
public void fillData(File file) {
Workbook workbook = null;
try {
workbook = Workbook.getWorkbook(file);
}
catch (Exception e) {
}
Sheet sheet = workbook.getSheet(0);
headers.clear();
for (int i = 0; i < sheet.getColumns(); i++) {
Cell cell = sheet.getCell(i, 0);
headers.add(cell.getContents());
}
data.clear();
for (int j = 1; j < sheet.getRows(); j++) {
Vector<String> d = new Vector<String>();
for (int i = 0; i < sheet.getColumns(); i++) {
Cell cell = sheet.getCell(i, j);
d.add(cell.getContents());
}
d.add("\n");
data.add(d);
}
}
我建议您看一下方法fillData
两个部分:
1) try-catch
可能隐藏了问题:首先,您调用方法getWorkbook
,根据其java doc ,该方法可能在例如文件不存在的情况下引发异常。 但是,您getWorkbook
在try-catch
块中调用getWorkbook
,该块甚至不输出异常。 因此,如果出现任何问题,您将在workbook.getSheet(0)
处获得一个空指针,这将导致变量workbook
保持空值(在方法的第一行中分配空值)。 为避免此问题,您可以在catch块中添加一个printStackTrace
。 另一种选择是在方法定义中添加throws Exception
并删除try-catch
块。 这样做,您可能会找到空指针的真正原因。
try {
workbook = Workbook.getWorkbook(file);
} catch (Exception e) {
e.printStackTrace();
}
要么
public void fillData(File file) throws Exception {
Workbook workbook = Workbook.getWorkbook(file);
....
}
2)变量头是全局初始化的吗? 我在您的代码中看不到在何处初始化变量标头(就像headers = new ArrayList()
)。 如果不这样做,则会在headers.clear()
处获得一个空指针。 此外,如果不初始化变量data
可能会发生相同的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.