我试图将日期从Jtable写入Excel。
这是我公开的做法:
public void toExcel(JTable table, File file){
try{
TableModel model = table.getModel();
FileWriter excel = new FileWriter(file);
for(int i = 0; i < model.getColumnCount(); i++){
excel.write(model.getColumnName(i) + "\t");
}
excel.write("\n");
for(int i=0; i< model.getRowCount(); i++) {
for(int j=0; j < model.getColumnCount(); j++) {
excel.write(model.getValueAt(i,j).toString()+"\t");
}
excel.write("\n");
}
excel.close();
}catch(IOException e){ System.out.println(e); }
}
这就是我让代码执行的方式:
JMenuItem Save = new JMenuItem("Save gegevens");
Open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
toExcel(table, new File("Resultaten1.xls"));
}
});
mnNewMenu.add(Save);
但无论我在代码中改变什么,或者我尝试了什么,我总是得到一个NullPointer异常,我创建的文件总是空的。有人知道我做错了什么或者应该添加到我的代码中吗?
答案 0 :(得分:1)
model.getValueAt(i,j)
可能返回null,因此在使用返回值之前应检查null:
if (model.getValueAt(i,j) != null)
excel.write(model.getValueAt(i,j).toString()+"\t");
答案 1 :(得分:1)
model.getValueAt()
为null
,因此您会遇到此异常。
NullPointerException: Thrown when an application attempts to use null in a case where an object is required. These include: - Calling the instance method of a null object. - Accessing or modifying the field of a null object. - Taking the length of null as if it were an array. - Accessing or modifying the slots of null as if it were an array. - Throwing null as if it were a Throwable value.
因此,当您致电null
时,应该检查以避免使用model.setValueAt
。
答案 2 :(得分:0)
删除“.toString()”调用。 Java将自动用于在此表达式中使用字符串,如果存在null,您将看到null在文件中的位置。这样,您可以避免使用空行/列或重新考虑要输出到Excel的值。
NPE检查也会这样做 - 只是你不会理解丢失数据的位置。