¿Hay alguna manera de guardar los datos de JTable para sobresalir? Me gustaría guardar los datos que ingresé desde el programa, desde la tabla y luego en un archivo CSV.
Me gustaría tenerlo para que haya un botón que luego guarde los datos ingresados desde la GUI en la tabla y luego en el archivo CSV.
Esto puede ayudarte: -
Método para escribir en un archivo csv.
public static void exportToCSV(JTable table, String path) { try { TableModel model = table.getModel(); FileWriter csv = new FileWriter(new File(path)); for (int i = 0; i < model.getColumnCount(); i++) { csv.write(model.getColumnName(i) + ","); } csv.write("\n"); for (int i = 0; i < model.getRowCount(); i++) { for (int j = 0; j < model.getColumnCount(); j++) { csv.write(model.getValueAt(i, j).toString() + ","); } csv.write("\n"); } csv.close(); } catch (IOException e) { System.out.println("Error "+e); } }Para leerlo y mostrarlo en una JTable, puede usar OpenCSV .
CSVReader reader = new CSVReader(new FileReader("file.csv")); List list = reader.readAll(); JTable table = new JTable(list.toArray());No hay una 'función mágica' de una JTable que yo sepa que hará esto. JTable es un componente de interfaz de usuario, y lo que está solicitando es una función de datos, no una función de interfaz de usuario. Y no tiene mucho que ver con eclipse, que es solo el IDE que se usa para escribir el código.
Creo que lo que puede estar buscando es el modelo en el que se basa JTable. La primera solución que se me ocurre es modificar ese código modelo para tener un método que escriba los datos en el formato que desee; luego, un (otro) botón en su interfaz de usuario invocaría este método en el modelo para escribir los datos cuando el usuario elija. Es probable que haya otras formas de hacer esto, pero esa parece la más sencilla y sencilla.
Puedes probar este código:
public static boolean convertToCSV(JTable table, String path) { try { TableModel model = table.getModel(); FileWriter csv = new FileWriter(new File(path)); for (int i = 0; i < model.getColumnCount(); i++) { csv.write(model.getColumnName(i) + ","); } csv.write("\n"); for (int i = 0; i < model.getRowCount(); i++) { for (int j = 0; j < model.getColumnCount(); j++) { csv.write(model.getValueAt(i, j).toString() + ","); } csv.write("\n"); } csv.close(); return true; } catch (IOException e) { e.printStackTrace(); } return false; }