将数据从JTable导入Excel

我有代码来导入数据从JTable到Excel这样的:

public void toExcel(JTable table, File file){ try { WritableWorkbook workbook1 = Workbook.createWorkbook(file); WritableSheet sheet1 = workbook1.createSheet("First Sheet", 0); TableModel model = table.getModel(); for (int i = 0; i < model.getColumnCount(); i++) { Label column = new Label(i, 0, model.getColumnName(i)); sheet1.addCell(column); } int j = 0; for (int i = 0; i < model.getRowCount(); i++) { for (j = 0; j < model.getColumnCount(); j++) { Label row = new Label(j, i + 1, model.getValueAt(i, j).toString()); sheet1.addCell(row); } } workbook1.write(); workbook1.close(); } catch (Exception ex) { ex.printStackTrace(); } } void excell(){ toExcel(TabelPerencanaan, new File("H:\\Hasil.xlsx")); JOptionPane.showMessageDialog(null, "Data saved at " + "'H: \\ Hasil.xlsx' successfully", "Message", JOptionPane.INFORMATION_MESSAGE); 

}

但是,当打开文件“Hasil.xlsx”总是错误。 所以,该文件无法打开。 我不知道为什么那样。 谢谢

问题是Java Excel API只能以Excel 2000格式生成电子表格。 在这种情况下,您需要:

 new File("H:\\Hasil.xls") 

但是,如果您确实需要生成XLSX,则可以使用Apache POI 。

 Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(); Row row = sheet.createRow(0); TableModel model = table.getModel(); for (int i = 0; i < model.getColumnCount(); i++) { row.createCell(i).setCellValue(model.getColumnName(i)); } for (int i = 0; i < model.getRowCount(); i++) { row = sheet.createRow(i + 1); for (int j = 0; j < model.getColumnCount(); j++) { row.createCell(j).setCellValue( model.getValueAt(i, j).toString() ); } } FileOutputStream fileOut = new FileOutputStream("H:\\Hasil.xlsx"); wb.write(fileOut); fileOut.close();