空指针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检查也可以 – 只是你不明白缺失的数据在哪里。