Я пытаюсь экспортировать файл JTable в Excel. Имена столбцов и строк хороши, но вся информация, которую я добавляю в JTable, не записывается. Я попробовал System.out.println() и печатает значения Null везде, кроме имен столбцов и строк. Я попытался получить ответы от мамы google, но после 2 часов чтения и попытки, до сих пор нет прогресса. То, что остается в моей голове, заключается в том, что может быть некоторая ошибка в коде в разделе "Write to Excel" или все, что добавлено в JTable, это просто изображение на моем мониторе, а не фактические данные в нем.? Исправьте меня, если я ошибаюсь, и любая помощь очень ценится.
Вот запись в Excel. в первом цикле For я получаю заголовки и во втором цикле For, я должен получить все, что находится внутри моего JTable, но я не знаю.
TableColumnModel tcm = nrp.rotaTable.getColumnModel();
String nameOfFile = JOptionPane.showInputDialog("Name of the file");
Workbook wb = new HSSFWorkbook();
CreationHelper createhelper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");
Row row = null;
Cell cell = null;
for (int i = 0; i < nrp.tableModel.getRowCount(); i++) {
row = sheet.createRow(i);
for (int j = 0; j < tcm.getColumnCount(); j++) {
cell = row.createCell(j);
cell.setCellValue(tcm.getColumn(j).getHeaderValue().toString());
}
}
for (int i = 1; i < nrp.tableModel.getRowCount(); i++) {
row = sheet.createRow(i);
System.out.println("");
for (int j = 0; j < nrp.tableModel.getColumnCount(); j++) {
cell = row.createCell(j);
cell.setCellValue((String) nrp.tableModel.getValueAt(i, j)+" ");
System.out.print((String) nrp.tableModel.getValueAt(i, j)+" ");
}
}
File file = new File("Some name.xls");
FileOutputStream out = new FileOutputStream(file);
wb.write(out);
out.close();
wb.close();
}
}
И вот код FocusListener.
rotaTable.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
CellEditor cellEditor = rotaTable.getCellEditor();
if (cellEditor != null)
if (cellEditor.getCellEditorValue() != null)
cellEditor.stopCellEditing();
else
cellEditor.cancelCellEditing();
}
});
Я использую 'DefaultTableModel'
DefaultTableModel tableModel = new DefaultTableModel(12,8);
JTable rotaTable = new JTable(tableModel);
Это первый раз, когда я работаю с библиотекой POI.
Изображение моего JTable http://imgur.com/a/jnB8j
Изображение распечатанных результатов в консоли http://imgur.com/a/jnB8j
Создано изображение файла Excel. http://imgur.com/a/jnB8j