Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Base de Datos / Java / Proyectos / Exportar registros MySQL a Excel

Exportar registros MySQL a Excel

Por jc mouse domingo, febrero 24, 2013

Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelapi permite a los programadores de Java leer hojas de cálculo de Excel,  modificarlos y escribir los cambios por ejemplo, en disco, HTTP, base de datos, etc.

jexcelapi

Puedes descargar jexcelapi en su ultima versión 2.6.12 (última modificación 2009-10.26), ademas cuenta con otra API para C# igualmente fácil de usar.

En este ejemplo utilizamos una base de datos con solo una tabla y unos cuantos registros.

-- 
-- Estructura de tabla para la tabla 'persona'
-- 

CREATE TABLE persona (
  ci varchar(7) NOT NULL,
  nombre varchar(22) NOT NULL,
  apellido varchar(22) default NULL,
  fechanac datetime NOT NULL,
  salario float default '0',
  PRIMARY KEY  (ci)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

-- 
-- Volcar la base de datos para la tabla 'persona'
-- 

INSERT INTO persona VALUES ('7676544', 'Segismundo', 'Cruel', '2011-12-15 12:35:00', 700.25);
INSERT INTO persona VALUES ('1233211', 'paulina', 'Larevol Tosa', '2011-12-15 22:12:11', 1500);
INSERT INTO persona VALUES ('2222222', 'Paca', 'Garte', '2012-07-26 10:00:00', 723.99);
INSERT INTO persona VALUES ('5545443', 'Nicolas', 'Queroso', '1988-02-01 15:28:02', 269.9);
INSERT INTO persona VALUES ('5451110', 'Mercedes', 'Carada', '1995-02-01 23:28:46', 890.55);

Y la clase que hará uso de jexcelapi para exportar los registros es la siguiente:

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Locale;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class toExcel {

  /* DATOS PARA LA CONEXION */
  /** nombre de la base de datos*/
  private String db = "dbtest";
  /** usuario */
  private String user = "";
  /** contraseña de MySql*/
  private String password = "";
  /** Cadena de conexion */
  private String url = "jdbc:mysql://localhost/"+db;
  /** variable para trabajar con la conexion a la base de datos */
  private Connection conn = null;  
  /** ruta y archivo de destino */
  File file = new File("e:\\temporal\\output.xls");

    /**
 * Constructor de clase
 */
    public toExcel()
    {
      this.url = "jdbc:mysql://localhost/"+this.db;
       try{
         //obtenemos el driver de para mysql
         Class.forName("com.mysql.jdbc.Driver");
         //obtenemos la conexión
         conn = DriverManager.getConnection( this.url, this.user , this.password );
         if ( conn!=null ){
            System.out.println("Conexión a la base de datos "+this.db+"...... Listo ");
         }
      }catch(SQLException e){
         System.err.println( e.getMessage() );
      }catch(ClassNotFoundException e){
         System.err.println( e.getMessage() );
      }
    }

    /**
 * Metodo para obtener los registros de la base de datos y crear el archivo excel
 */
    public void WriteExcel()
    {
        int row=0;
        //formato fuente para el contenido contenido
        WritableFont wf = new WritableFont( WritableFont.ARIAL, 12, WritableFont.NO_BOLD );
        WritableCellFormat cf = new WritableCellFormat(wf);    

        //Interfaz para una hoja de cálculo
        WritableSheet excelSheet = null;
        WritableWorkbook workbook = null;

        //Establece la configuración regional para generar la hoja de cálculo
        WorkbookSettings wbSettings = new WorkbookSettings();
        wbSettings.setLocale(new Locale("en", "EN"));

        try {
            workbook = Workbook.createWorkbook( file, wbSettings );
            //hoja con nombre de la tabla
            workbook.createSheet( "persona", 0 );
            excelSheet = workbook.getSheet(0);
            System.out.println(  "creando hoja excel.....Listo"  );            
        } catch (IOException ex) {
            System.err.println( ex.getMessage() );
        }

        //Consulta SQL 
        String sql = "SELECT ci , nombre , apellido , fechanac, DATE_FORMAT(fechanac,'%Y-%m-%d %h:%i:%s') AS fecha , salario FROM persona ";
         try{
             PreparedStatement pstm = conn.prepareStatement( sql );
             ResultSet res = pstm.executeQuery();
             System.out.println(  "obteniendo registros.....Listo"  );
              while(res.next())
              {
                  Number ci     = new Number( 0 , row, res.getLong( "ci" ) , cf );
                  Label nombre  = new Label( 1 , row, res.getString( "nombre" ) , cf );                  
                  Label apellido= new Label( 2 , row, res.getString( "apellido" ) , cf );                  
                  Label fechanac= new Label( 3 , row, res.getString( "fecha" ) , cf );
                  Number salario= new Number( 4 , row, res.getFloat( "salario" ) , cf );                                    
                  row ++;                  
                 try {
                     excelSheet.addCell( ci );
                     excelSheet.addCell( nombre );
                     excelSheet.addCell( apellido );
                     excelSheet.addCell( fechanac );
                     excelSheet.addCell( salario );
                 } catch (WriteException ex) {
                     System.err.println(  ex.getMessage() );
                 } 
              }
             res.close();         
         }catch( SQLException e ){
            System.err.println( e.getMessage() );
        }

        //Escribe el archivo excel en disco
        try {
            workbook.write();
            workbook.close();
            System.out.println(  "Escribiendo en disco....Listo"  );         
        } catch (IOException ex) {
            System.err.println(  ex.getMessage() );
        }
        catch (WriteException ex) {
           System.err.println(  ex.getMessage() );
        }

        System.out.println(  "Proceso completado...."  );
    }

}//--> fin clase

La anterior clase es sencilla de comprender y esta llena de comentarios, pero si aún así tienes problemas, te recomiendo le des una leída a la documentación de esta API en su pagina oficial.

Puedes descargar el proyecto completo de este ejemplo AQUI 🙂

OJO Para ejecutar correctamente el ejemplo de esta página, necesitas

– Descargar e instalar jexcelapi

– Tener instalado el conector Java-MySQL

– Netbeans 6.9 o superior

– MySQL y una base de datos.

– MS Excel

Me despido con una frase celebre para pensar 🙂

«Mujer Excel: Dicen que hace muchas cosas, pero vos tan solo la usas para la operación básica. «

Tags

Artículos similares

Buscar y cargar imagenes de disco

Cuando se almacenan imágenes en una aplicación java y se desea después a modo de registro buscar estas y cargarlas en al[...]

Cifrado francmasón PigPen

El cifrado francmasón es un cifrado por sustitución simple que cambia las letras por símbolos. Sin embargo, el uso de sí[...]

Elimina el fondo de tus fotografías en 5 segundos

Si te gusta realizar tus propios memes o foto montajes pero tienes poca o nula experiencia en editores gráficos como Pho[...]

Ejemplo de uso de ProgressDialog

Un ProgressDialog muestra una ventana con un texto y una barra de progreso que indica el tiempo que tarda una tarea en r[...]

Videojuego educativo contra el Ciberbullying

¿Que es el Ciberbullying? Ciberbullying es la unión de dos palabras en inglés cyber + bullying, en español lo conocemos[...]

HELP ME – Envía un SMS de auxilio con tu ubicación

HELP ME, es una aplicación android gratuita que te permite enviar un mensaje de auxilio (S.O.S.) hasta 4 personas que tu[...]