空指针exception将Jtable写入Excel
我试图从Jtable写入date到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);
但无论我改变我的代码或任何我尝试,我总是得到一个空指针exception和我创build的文件总是空的..有人知道我做错了或应该添加到我的代码?
model.getValueAt(i,j)
可能会返回null,因此您应该在使用返回的值之前检查null:
if (model.getValueAt(i,j) != null) excel.write(model.getValueAt(i,j).toString()+"\t");
model.getValueAt()
为null
所以你得到这个exception。
空指针exception: 当应用程序试图在需要对象的情况下使用null时抛出。 这些包括: - 调用空对象的实例方法。 - 访问或修改空对象的字段。 - 把null的长度当作一个数组。 - 访问或修改null的插槽,就好像它是一个数组。 - 抛出null,就像它是一个Throwable值。
所以你应该检查以避免在调用model.setValueAt
时使用null
。
删除“.toString()”调用。 Java会自动使用这个expression式中的string,如果有空 – 你会看到你的文件中的空位置。 这样,您可以避免使用空行/列或重新考虑您想要输出到Excel的值。
NPE检查也可以 – 只是你不明白缺失的数据在哪里。