Java 如何在Excel中导入JTable值?
我试图在excel工作表中加载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
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。在张贴的代码中用注释标记此行。