Crear una Aplicación con Java, Swing y Maven en Eclipse: Subir Datos de un Archivo Excel a MySQL

En este artículo, aprenderemos a crear una aplicación de escritorio en Java utilizando Swing, Maven, y Apache POI para manejar archivos Excel, y conectarla con una base de datos MySQL. La interfaz tendrá dos botones: uno para seleccionar un archivo .xlsx con datos de trabajadores y otro para enviar los datos a MySQL.


Requisitos Previos

  1. Java Development Kit (JDK) instalado.
  2. Eclipse IDE for Java Developers.
  3. MySQL y un esquema creado para guardar los datos.
  4. Conexión a internet para agregar dependencias en Maven.

Pasos para Crear la Aplicación

1. Crear un Proyecto Maven en Eclipse

  1. Abre Eclipse y selecciona File > New > Maven Project.
  2. Escoge un arquetipo como maven-archetype-quickstart.
  3. Configura el Group ID y Artifact ID (por ejemplo, com.ejemplo.swingexcelmysql).

2. Configurar el Archivo pom.xml

En tu archivo pom.xml, agrega las dependencias necesarias:

Dependencias Requeridas:

  • Apache POI: Para manejar archivos Excel.
  • MySQL Connector: Para conectar con la base de datos MySQL.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ejemplo.swingexcelmysql</groupId>
    <artifactId>AppSwingExcelMySQL</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- Apache POI -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>

        <!-- MySQL Connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
    </dependencies>
</project>

3. Configurar la Base de Datos MySQL

  1. Crea una base de datos en MySQL llamada trabajadores:
CREATE DATABASE trabajadores;
USE trabajadores;

CREATE TABLE datos_trabajador (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100),
    edad INT,
    departamento VARCHAR(100)
);

4. Crear la Interfaz Gráfica con Swing

La interfaz tendrá un JFrame con dos botones:

  1. Cargar Archivo Excel.
  2. Enviar Datos a MySQL.

Código Completo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class AppSwingExcelMySQL {

    public static void main(String[] args) {
        // Crear ventana principal
        JFrame frame = new JFrame("Cargar Datos a MySQL");
        frame.setSize(400, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());

        // Botón para seleccionar archivo Excel
        JButton btnCargarArchivo = new JButton("Cargar Archivo Excel");
        JButton btnEnviarDatos = new JButton("Enviar Datos a MySQL");

        // Etiqueta para mostrar mensajes
        JLabel lblMensaje = new JLabel("");

        // Agregar componentes a la ventana
        frame.add(btnCargarArchivo);
        frame.add(btnEnviarDatos);
        frame.add(lblMensaje);

        // Listener para el botón de cargar archivo
        final File[] archivoSeleccionado = new File[1]; // Para guardar el archivo seleccionado
        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());
                }
            }
        });

        // Listener para el botón de enviar datos
        btnEnviarDatos.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (archivoSeleccionado[0] != null) {
                    try {
                        // Leer archivo Excel
                        FileInputStream fis = new FileInputStream(archivoSeleccionado[0]);
                        Workbook workbook = new XSSFWorkbook(fis);
                        Sheet sheet = workbook.getSheetAt(0);

                        // Conexión a MySQL
                        Connection conn = DriverManager.getConnection(
                                "jdbc:mysql://localhost:3306/trabajadores", "root", "tu_contraseña");

                        // Recorrer filas del archivo Excel
                        for (Row row : sheet) {
                            if (row.getRowNum() == 0) continue; // Omitir la fila de encabezado

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

                            // Insertar datos en la base de datos
                            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();
                        }

                        lblMensaje.setText("Datos enviados a MySQL exitosamente.");
                        workbook.close();
                        fis.close();
                        conn.close();
                    } catch (Exception ex) {
                        lblMensaje.setText("Error: " + ex.getMessage());
                    }
                } else {
                    lblMensaje.setText("Por favor, selecciona un archivo primero.");
                }
            }
        });

        frame.setVisible(true);
    }
}

5. Ejecutar la Aplicación

  1. Asegúrate de que MySQL esté corriendo y tu tabla esté configurada.
  2. Abre Eclipse, limpia y construye el proyecto con Maven (Project > Maven > Update Project).
  3. Ejecuta el archivo principal AppSwingExcelMySQL.

Conclusión

Esta aplicación muestra cómo integrar Java Swing para crear una interfaz gráfica, Apache POI para manejar archivos Excel, y MySQL para gestionar datos en una base de datos. El uso de Maven simplifica la gestión de dependencias, asegurando que tengas las bibliotecas necesarias sin configuraciones complicadas.

¡Con este enfoque, puedes crear soluciones robustas y personalizables para proyectos que involucren la manipulación de datos y bases de datos!

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