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

Cargar fuente TTF

Cuando realizamos un proyecto java utilizando fuentes de nuestro sistema, al momento de distribuir el programa y ejecuta[...]

TextView Autocompletado

Un TextView autocompletado nos facilita el ingreso de información en aplicaciones móviles ya que te muestra posibles opc[...]

Camara de Seguridad por Internet (LiveCam)

Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hac[...]

Paso de parámetros entre dos Activity

En este tutorial veremos como pasar parámetros de un activity a otro activity, no hay mucho que decir así que manos a la[...]

Servicio Web SOAP en Java

En este post vamos a construir un Servicio Web bajo el protocolo SOAP (Simple Object Access Protocol) el cual básicament[...]

Uso del condicional IF

En este post conocernos lo que son las Estructuras de Control IF en los script de Bash. Estas estructuras nos ayudan a c[...]