Código de Java - Java JTable cargar consulta PostgreSQL y exportar a Excel o PDF

Imágen de perfil
Val: 42
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Java JTable cargar consulta PostgreSQL y exportar a Excel o PDFgráfica de visualizaciones


Java

Actualizado el 6 de Marzo del 2016 por Julio (12 códigos) (Publicado el 16 de Febrero del 2016)
14.104 visualizaciones desde el 16 de Febrero del 2016
Seguimos con los ejemplos de Java Swing en este caso vamos a ver dos cosas, la primera es como cargar una consulta a una base de datos utilizando JDBC en un javax.swing.JTable, y en la segunda veremos como exportar el contenido del javax.swing.JTable a Excel con un método genérico, es decir, válido para cualquier JTable usando Apache Poi Java API para Excel, en las nueva versiones añadimos exportación automática a PDF e impresión directa.

Versión 1.2: añadimos Toolbar y exportación a PDF
JFrameJTableDatabaseToExcel-V_1_2-Final-02


Vamos a crear un clase con un constructor al que le podamos pasar por parámetros los datos para cargar en un <span class="code-java-b">javax.swing.JTable</span> cualquier consulta, una vez hecho esto crearemos un botón que nos permita exportar los datos cargados a una hoja <span class="code-file">Excel</span>.

Así definimos nuestra clase con las siguientes condiciones:

Constructor: pasaremos por parámetros la consulta, los nombres de las columnas a presentar, el tipo de datos de cada columna, y por último, el ancho que ocupará cada una en la presentación.

Conexión a la base de datos: utilizamos JDBC para conectar con la base de datos y obtener los resultados de la consulta.

DefaultTableModel: el modelo de datos de la tabla será variable y adaptable a cada consulta que se pase por parámetros con las condiciones especificadas anteriormente en el constructor, esto implica que para cada consulta se construirá automáticamente un javax.​swing.​table.​DefaultTableMode adaptado para cargar la consulta en el javax.swing.JTable.

Carga de la consulta: para facilitar la comprensión del ejemplo fijaremos una conexión a una base de datos PostgreSQL(http://codigoxules.org/postgresql/), incluiremos todas las acciones necesarias para la carga en este método, para que en otros ejemplos posteriores se pueda usar como método de actualización de la tabla.

Exportar a Excel: crearemos un botón para ejecutar la acción de exportación, para ello crearemos un método genérico que se pueda reutilizar con cualquier javax.swing.JTable

Impresión directa (Versión 1.1): añadimos un nuevo botón para imprimir automáticamente y de forma sencilla el contenido de cualquier JTable directamente por la impresora del sistema utilizando el método de JTable print.

Toolbar botones (Versión 1.2): En está nueva versión actualizamos la clase para añadir exportación automática a PDF y pasar todos los botones de funcionalidades a un Toolbar añadiendo imágenes a los botones.

Exportar a PDF (Versión 1.2): crearemos un botón para ejecutar la acción de exportación del JTable a iText PDF, para ello crearemos un método genérico que se pueda reutilizar con cualquier javax.swing.JTable, para obtener información más detallas puedes leer el artículo: Java iText PDF – Creando un pdf en Java con iText(http://codigoxules.org/java-itext-pdf-creando-pdf-java-itext/), y consultar el ejemplo publicado en LWP de Java JTable exportar a PDF con iText (http://lwp-l.com/s3452).


Espero que te sea útil.

Requerimientos

Tecnologías utilizadas
Apache Poi Java API para Excel (http://codigoxules.org/java/java-excel/)
Java iText PDF – Creando un pdf en Java con iText (http://codigoxules.org/java-itext-pdf-creando-pdf-java-itext/).
Consultar el ejemplo publicado en LWP de Java JTable exportar a PDF con iText (http://lwp-l.com/s3452).

1.0

Publicado el 16 de Febrero del 2016gráfica de visualizaciones de la versión: 1.0
2.449 visualizaciones desde el 16 de Febrero del 2016

1.1
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 19 de Febrero del 2016gráfica de visualizaciones de la versión: 1.1
2.349 visualizaciones desde el 19 de Febrero del 2016

1.2
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 6 de Marzo del 2016gráfica de visualizaciones de la versión: 1.2
9.307 visualizaciones desde el 6 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

En está nueva versión actualizamos la clase para añadir exportación automática a PDF y pasar todos los botones de funcionalidades a un Toolbar añadiendo imágenes a los botones.

Exportar a PDF: crearemos un botón para ejecutar la acción de exportación del JTable a iText PDF, para ello crearemos un método genérico que se pueda reutilizar con cualquier javax.swing.JTable, para obtener información más detallas puedes leer el artículo: Java iText PDF – Creando un pdf en Java con iText(http://codigoxules.org/java-itext-pdf-creando-pdf-java-itext/), y consultar el ejemplo publicado en LWP de Java JTable exportar a PDF con iText (http://lwp-l.com/s3452).


El resultado final será:

JFrameJTableDatabaseToExcel-V_1_2-Final-02

Código para exportar a PDF:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
     * Explanation of the method by which we read the JTable we pass as
     * parameter, and where we copy its content in a PDF passed 
     * as a parameter.
     * Método con el que leemos cualquier JTable que pasamos como
     * parámetro, y donde copiamos su contenido en un PDF que se pasa 
     * como parámetro. 
     *
     * @param jTable <code>JTable</code> 
     *      the JTable we are going to extract to excel 
     *      El Jtable que vamos a extraer a excel.
     * @param pdfNewFile <code>String</code> 
     *      pdf File we are going to write. 
     *      Fichero pdf en el que vamos a escribir. 
     * @param title <code>String</code> 
     *      title
     *      Título 
     */
    public void utilJTableToPdf(JTable jTable, File pdfNewFile, String title){
        try {
            // We create the document and set the file name.        
            // Creamos el documento e indicamos el nombre del fichero.
            Document document = new Document();
            try {
                PdfWriter.getInstance(document, new FileOutputStream(pdfNewFile));
            } catch (FileNotFoundException fileNotFoundException) {
                System.out.println("No such file was found to generate the PDF (No se encontró el fichero para generar el pdf)" + fileNotFoundException);
            }
            document.open();
            // We add metadata to PDF
            // Añadimos los metadatos del PDF
            document.addTitle("Table export to PDF (Exportamos la tabla a PDF)");
            document.addSubject("Using iText (usando iText)");
            document.addKeywords("Java, PDF, iText");
            document.addAuthor("Código Xules");
            document.addCreator("Código Xules");
 
            // First page (Primera página)
            Anchor anchor = new Anchor("Table export to PDF (Exportamos la tabla a PDF)", categoryFont);
            anchor.setName("Table export to PDF (Exportamos la tabla a PDF)");
 
            // Second parameter is the number of the chapter (El segundo parámetro es el número del capítulo).
            Chapter catPart = new Chapter(new Paragraph(anchor), 1);
 
            Paragraph subPara = new Paragraph("Do it by Xules (Realizado por Xules)", subCategoryFont);
            Section subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("This is a simple example (Este es un ejemplo sencillo)"));
 
            // Create the table (Creamos la tabla)
            PdfPTable table = new PdfPTable(jTable.getColumnCount());
 
            // Now we fill the rows of the PdfPTable (Ahora llenamos las filas de PdfPTable)
            PdfPCell columnHeader;
            // Fill table columns header 
            // Rellenamos las cabeceras de las columnas de la tabla.                
            for (int column = 0; column < jTable.getColumnCount(); column++) {
                columnHeader = new PdfPCell(new Phrase(jTable.getColumnName(column)));
                columnHeader.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(columnHeader);
            }
            table.setHeaderRows(1);
            // Fill table rows (rellenamos las filas de la tabla).                
            for (int row = 0; row < jTable.getRowCount(); row++) {
                for (int column = 0; column < jTable.getColumnCount(); column++) {
                    table.addCell(jTable.getValueAt(row, column).toString());
                }
            }
            subCatPart.add(table);
 
            document.add(catPart);
 
            document.close();
            JOptionPane.showMessageDialog(this.jPanelQuery, "Your PDF file has been generated!(¡Se ha generado tu hoja PDF!)",
                    "RESULTADO", JOptionPane.INFORMATION_MESSAGE);
        } catch (DocumentException documentException) {
            System.out.println("The file not exists (Se ha producido un error al generar un documento): " + documentException);
            JOptionPane.showMessageDialog(this.jPanelQuery, "The file not exists (Se ha producido un error al generar un documento): " + documentException,
                    "ERROR", JOptionPane.ERROR_MESSAGE);
        }
 
    }

Espero que te resulte útil.

Si alguno de los archivos de descarga no funciona, comentanos aquí el error.




Comentarios sobre la versión: 1.2 (3)

Imágen de perfil
8 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
muy bueno
Responder
Sabas
30 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
Hola amigo, muy interesante tu codigo, estoy empezando a dar primeros pasos, donde puedo descargar el codigo para la conexion a postgress, solo veo el de la conversion de los datos a pdf.

Saludos cordiales
Responder
Imágen de perfil
1 de Abril del 2016
estrellaestrellaestrellaestrellaestrella
Hola Sabas.

Esta todo incluido en el fichero zip en único fichero, para facilitar el aprendizaje está todo incluido dentro de la misma clase: JFrameJTableDatabaseToExcelPdfPrintExample.java incluido en el archivo zip para descargar.

En el código encontrarás las explicaciones de lo que hace cada método, para informarte de como funciona la conexión a PostgreSQL con más detalle lo puedes ver en la publicación en mi blog: http://codigoxules.org/java-jtable-cargar-consulta-postgresql-exportar-excel/ , que comparte el mismo código.

A continuación, te muestro el código de la conexión que como te dije puedes encontrar en la clase:

[code]
/**
* Method to connect to the database by passing parameters.
* Método para establecer la conexión a la base de datos mediante el paso de parámetros.
*
* @param host <code>String</code> host name or ip. Nombre del host o ip.
* @param port <code>String</code> listening database port. Puerto en el que escucha la base de datos.
* @param database <code>String</code> database name for the connection. Nombre de la base de datos para la conexión.
* @param user <code>String</code> user name. Nombre de usuario.
* @param password <code>String</code> user password. Password del usuario.
*/
private boolean connectDatabase(String host, String port, String database,
String user, String password) {
String url = "";
try {
// We register the PostgreSQL driver
// Registramos el driver de PostgresSQL
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException ex) {
System.out.println("Error al registrar el driver de PostgreSQL: " + ex);
}
url = "jdbc:postgresql://" + host + ":" + port + "/" + database;
// Database connect
// Conectamos con la base de datos
setConnection(DriverManager.getConnection(
url,
user, password));
boolean valid = connection.isValid(50000);
System.out.println(valid ? "TEST OK" : "TEST FAIL");
return valid;
} catch (java.sql.SQLException sqle) {
System.out.println("Error al conectar con la base de datos de PostgreSQL (" + url + "): " + sqle);
return false;
}
}

[/code]


Si solo quieres un ejemplo de Java para conectar a base de datos PostgreSQL también lo tienes en detalle aquí: http://codigoxules.org/conectar-postgresql-utilizando-driver-jdbc-java-postgresql-jdbc/

Espero que te guste y te ayude mucho en tu aprendizaje.

Saludos.
Responder

Comentar la versión: 1.2

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3436