空指针异常将Jtable写入Excel

时间:2014-04-12 12:12:13

标签: java excel nullpointerexception jtable

我试图将日期从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异常,我创建的文件总是空的。有人知道我做错了什么或者应该添加到我的代码中吗?

3 个答案:

答案 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检查也会这样做 - 只是你不会理解丢失数据的位置。