Java 如何在Excel中导入JTable值?

Java 如何在Excel中导入JTable值?,java,excel,swing,jtable,Java,Excel,Swing,Jtable,我试图在excel工作表中加载JTable值,但它给出了空指针异常。现在,当我尝试使用j循环的break after插入该数据时,它会将其插入excel,但另一个会给出空指针异常 for (int i = 0; i < datatypetable.getRowCount(); i++) { int ColNum = 0; row = wb.createRow(i); for (int j = 0

我试图在excel工作表中加载
JTable
值,但它给出了空指针异常。现在,当我尝试使用j循环的break after插入该数据时,它会将其插入excel,但另一个会给出空指针异常

for (int i = 0; i < datatypetable.getRowCount(); i++) {
                int ColNum = 0;
                row = wb.createRow(i);
                for (int j = 0; j < datatypetable.getColumnCount(); j++) {
                    cell = wb.getRow(i).getCell(ColNum, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
                    String item1 = null;
                    if (datatypetable.getValueAt(i, j) != null) {
                        cell.setCellValue(datatypetable.getValueAt(i, j).toString());
                    } else {
                        cell.setCellValue(item1);
                    }
                    ColNum++;
                }


   }
代码如下:

 private void writeToExcel() {
        XSSFWorkbook ws = new XSSFWorkbook();
        XSSFSheet wb = ws.createSheet();
        XSSFRow row = wb.createRow(0);;
        XSSFCell cell = null;

        for (int i = 0; i < datatypetable.getRowCount(); i++) {
        int ColNum = 0;
        row = wb.createRow(i);
        for (int j = 0; j < datatypetable.getColumnCount(); j++) {
            cell = wb.getRow(i).getCell(ColNum, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
            if (cell == null) {
                System.out.println("Cell Project is: " + cell.toString());  
                cell = row.createCell(ColNum);
                cell.setCellValue(datatypetable.getValueAt(i, j).toString());
            } else {
                //cell = row.createCell(j);  
                System.out.println("Cell Object is: " + cell.toString());  
                System.out.println(datatypetable.getValueAt(i, j).toString());
                **cell.setCellValue(datatypetable.getValueAt(i, j).toString());**
            }
            ColNum++;
        }

    }    

        //Write Excel to file System
        try {
            FileOutputStream fos = new FileOutputStream(workingDir + File.separator + "First" + ".xls");
            ws.write(fos);
            fos.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(DataEntryArea.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(DataEntryArea.class.getName()).log(Level.SEVERE, null, ex);
        }
    }    

我知道这段代码有一个解决方案,我也尝试过,但仍然不起作用。我该如何解决这个问题

我找到了获取空指针异常的解决方案。由于这个
datatypetable.getValueAt(I,j).toString()
的原因,我得到了一个错误,因为表中的一些值可能为null,当它们为null时,它得到了一个错误NullPointerException

for (int i = 0; i < datatypetable.getRowCount(); i++) {
                int ColNum = 0;
                row = wb.createRow(i);
                for (int j = 0; j < datatypetable.getColumnCount(); j++) {
                    cell = wb.getRow(i).getCell(ColNum, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
                    String item1 = null;
                    if (datatypetable.getValueAt(i, j) != null) {
                        cell.setCellValue(datatypetable.getValueAt(i, j).toString());
                    } else {
                        cell.setCellValue(item1);
                    }
                    ColNum++;
                }


   }
for(int i=0;i
我没有提供完整的代码,因为上面的代码将与我所要求的相同。唯一的改变是在这个for循环中进行的。
希望我的回答对任何人都有帮助。

要更快获得更好的帮助,请发布或。“我知道这段代码有一个解决方案,我也尝试过,但仍然不起作用”什么?除非有效,否则解决方案不是解决方案!将完整错误消息(NullPointerException stacktrace)的打印输出添加到mcve。它应该告诉你哪一行导致了NPE。在张贴的代码中用注释标记此行。