Cómo Crear una Aplicación en Java para Gestionar Datos entre Excel y MySQL

En este artículo aprenderás cómo desarrollar una aplicación en Java utilizando Swing, Apache POI y MySQL. Esta herramienta te permitirá cargar datos desde un archivo Excel a una base de datos MySQL, configurar credenciales de usuario y exportar datos de la base de datos a un archivo Excel.

Requisitos Previos

  1. Conocimientos básicos de Java: Familiaridad con clases, métodos y estructuras de control.
  2. Entorno de desarrollo: Eclipse o cualquier IDE compatible con Java.
  3. MySQL instalado y configurado.
  4. Bibliotecas necesarias:
    • Apache POI para trabajar con archivos Excel.
    • MySQL Connector para conectarse a la base de datos.

Funcionalidades de la Aplicación

La aplicación tiene las siguientes características:

  1. Cargar Archivo Excel: Permite al usuario seleccionar un archivo .xlsx y cargarlo para procesar los datos.
  2. Enviar Datos a MySQL: Inserta los datos del archivo seleccionado a una tabla MySQL.
  3. Configurar Usuario y Contraseña: Cambia dinámicamente las credenciales de acceso a MySQL.
  4. Exportar MySQL a Excel: Recupera los datos de MySQL y permite guardarlos como un archivo Excel en una ubicación personalizada.

Estructura del Código

El programa está contenido en una clase principal App, que reside en el paquete Ejemplo.Examen. El código utiliza:

  • Swing para la interfaz gráfica.
  • Apache POI para manejar archivos Excel.
  • JDBC para interactuar con MySQL.

Configuración Inicial

  1. Dependencias Maven Asegúrate de que tu proyecto incluya las siguientes dependencias en el archivo pom.xml: <dependencies> <!-- Apache POI para Excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> <!-- Conector de MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> </dependencies>
  2. Configura la Base de Datos Crea una base de datos llamada trabajadores y una tabla llamada datos_trabajador: CREATE DATABASE trabajadores; USE trabajadores; CREATE TABLE datos_trabajador ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100), edad INT, departamento VARCHAR(100) );

Implementación del Código

1. Crear la Interfaz Gráfica

Utiliza un JFrame con los siguientes botones:

  • Cargar Archivo Excel
  • Enviar Datos a MySQL
  • Configurar Usuario y Contraseña
  • Exportar MySQL a Excel

Cada botón tiene un ActionListener para manejar las acciones correspondientes.

2. Cargar Archivo Excel

Con un JFileChooser, el usuario selecciona el archivo Excel. Este se procesa con Apache POI para leer los datos de las celdas.

btnCargarArchivo.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JFileChooser fileChooser = new JFileChooser();
        int seleccion = fileChooser.showOpenDialog(frame);

        if (seleccion == JFileChooser.APPROVE_OPTION) {
            archivoSeleccionado[0] = fileChooser.getSelectedFile();
            lblMensaje.setText("Archivo seleccionado: " + archivoSeleccionado[0].getName());
        }
    }
});

3. Enviar Datos a MySQL

Lee los datos del archivo Excel y los inserta en la tabla MySQL usando una conexión JDBC.

btnEnviarDatos.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        if (archivoSeleccionado[0] != null) {
            try {
                FileInputStream fis = new FileInputStream(archivoSeleccionado[0]);
                Workbook workbook = new XSSFWorkbook(fis);
                Sheet sheet = workbook.getSheetAt(0);

                Connection conn = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/trabajadores", dbUser, dbPassword);

                for (Row row : sheet) {
                    if (row.getRowNum() == 0) continue; // Omitir encabezado

                    String nombre = row.getCell(0).getStringCellValue();
                    int edad = (int) row.getCell(1).getNumericCellValue();
                    String departamento = row.getCell(2).getStringCellValue();

                    String sql = "INSERT INTO datos_trabajador (nombre, edad, departamento) VALUES (?, ?, ?)";
                    PreparedStatement stmt = conn.prepareStatement(sql);
                    stmt.setString(1, nombre);
                    stmt.setInt(2, edad);
                    stmt.setString(3, departamento);
                    stmt.executeUpdate();
                }

                JOptionPane.showMessageDialog(frame, "Datos enviados a MySQL exitosamente.", "Éxito", JOptionPane.INFORMATION_MESSAGE);
                workbook.close();
                fis.close();
                conn.close();
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(frame, "Error: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }
});

4. Configurar Usuario y Contraseña

Solicita al usuario el nombre de usuario y contraseña para conectarse a la base de datos.

btnConfigurarBD.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        dbUser = JOptionPane.showInputDialog(frame, "Introduce el usuario de la base de datos:");
        dbPassword = JOptionPane.showInputDialog(frame, "Introduce la contraseña de la base de datos:");
        JOptionPane.showMessageDialog(frame, "Configuración actualizada correctamente.", "Configuración", JOptionPane.INFORMATION_MESSAGE);
    }
});

5. Exportar MySQL a Excel

Utiliza otro JFileChooser para seleccionar la ubicación de guardado del archivo Excel.

btnExportarBD.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        try {
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/trabajadores", dbUser, dbPassword);

            String sql = "SELECT * FROM datos_trabajador";
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);

            Workbook workbook = new XSSFWorkbook();
            Sheet sheet = workbook.createSheet("Datos Trabajadores");

            Row headerRow = sheet.createRow(0);
            headerRow.createCell(0).setCellValue("ID");
            headerRow.createCell(1).setCellValue("Nombre");
            headerRow.createCell(2).setCellValue("Edad");
            headerRow.createCell(3).setCellValue("Departamento");

            int rowIndex = 1;
            while (rs.next()) {
                Row row = sheet.createRow(rowIndex++);
                row.createCell(0).setCellValue(rs.getInt("id"));
                row.createCell(1).setCellValue(rs.getString("nombre"));
                row.createCell(2).setCellValue(rs.getInt("edad"));
                row.createCell(3).setCellValue(rs.getString("departamento"));
            }

            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setDialogTitle("Guardar Archivo Excel");
            if (fileChooser.showSaveDialog(frame) == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                FileOutputStream fos = new FileOutputStream(file + ".xlsx");
                workbook.write(fos);
                fos.close();
                workbook.close();
                JOptionPane.showMessageDialog(frame, "Datos exportados exitosamente.", "Éxito", JOptionPane.INFORMATION_MESSAGE);
            }

            conn.close();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(frame, "Error: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
});

Consejos si Estás en un Examen

  1. Prepara el Entorno: Asegúrate de que tu entorno de desarrollo esté configurado correctamente antes de comenzar.
  2. Divide el Problema: Enfócate en una funcionalidad a la vez.
  3. Comprueba la Conexión a MySQL: Verifica las credenciales y la base de datos antes de ejecutar el código.
  4. Maneja Errores: Usa try-catch para capturar y manejar excepciones comunes.
  5. Documenta Tu Código: Incluye comentarios para describir cada bloque funcional.

Con estos pasos, puedes crear una aplicación robusta y funcional. ¡Buena suerte!

three white ceramic pots with green leaf plants near open notebook with click pen on top
Photo by Ylanite Koppens on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad