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
- Java Development Kit (JDK) instalado.
- Eclipse IDE for Java Developers.
- MySQL y un esquema creado para guardar los datos.
- Conexión a internet para agregar dependencias en Maven.
Pasos para Crear la Aplicación
1. Crear un Proyecto Maven en Eclipse
- Abre Eclipse y selecciona
File > New > Maven Project
. - Escoge un arquetipo como
maven-archetype-quickstart
. - Configura el
Group ID
yArtifact 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
- 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:
- Cargar Archivo Excel.
- 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
- Asegúrate de que MySQL esté corriendo y tu tabla esté configurada.
- Abre Eclipse, limpia y construye el proyecto con Maven (
Project > Maven > Update Project
). - 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!