Foros del Web » Programación para mayores de 30 ;) » Java »

como lo hice? query a excell via java (poi)

Estas en el tema de como lo hice? query a excell via java (poi) en el foro de Java en Foros del Web. Software utilizado: S.O. Win Xp Apache Tomcat Mysql POI Drinkweaver Con este tema inauguro lo que he llamado como lo hice?, pienso compartir mis "descubrimientos" ...
  #1 (permalink)  
Antiguo 24/09/2004, 09:51
Avatar de ko^ke  
Fecha de Ingreso: septiembre-2001
Ubicación: México D.F.
Mensajes: 364
Antigüedad: 22 años, 7 meses
Puntos: 1
como lo hice? query a excell via java (poi)

Software utilizado:
S.O. Win Xp
Apache Tomcat
Mysql
POI
Drinkweaver

Con este tema inauguro lo que he llamado como lo hice?, pienso compartir mis "descubrimientos" con java y compatirlos con ustedes.

Esta vez se trata de una jsp que hace un query a mysql y te crea un archivo en excel con el resultado del query .


Código PHP:
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<%@ include 
file="Connections/conn.jsp" %>
<%@ 
page import="java.lang.*" %>
<%@ 
page import="javax.mail.*" %>
<%@ 
page import="java.io.*"%>
<%@ 
page import="javax.servlet.http.HttpServletRequest"%>
<%@ 
page import="javax.servlet.http.*"%>
<%@ 
page import="java.io.FileOutputStream"%>
<%@ 
page import="java.io.IOException"%>
<%@ 
page import="java.io.InputStream"%>
<%@ 
page import="org.apache.poi.poifs.filesystem.POIFSFileSystem"%>
<%@ 
page import="org.apache.poi.hssf.usermodel.HSSFCell"%>
<%@ 
page import="org.apache.poi.hssf.usermodel.HSSFSheet"%>
<%@ 
page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
<%@ 
page import="org.apache.poi.hssf.usermodel.HSSFRow"%>
<%@ 
page import="org.apache.poi.hssf.usermodel.HSSFCellStyle"%>
<%@ 
page import="org.apache.poi.hssf.usermodel.HSSFFont"%>
<%@ 
page import="java.sql.*"%>


<%
    try {
     
        
//Creamos el archivo de excell
         
HSSFWorkbook wb = new HSSFWorkbook();
        
FileOutputStream fileOut = new FileOutputStream("C:\\tomcat5\\jakarta-tomcat-5.0.27\\webapps\\ROOT\\sms\\workbook.xls");
        
HSSFSheet sheet1 wb.createSheet("cotizador");
    
        
//Creamos el Resulset
        
Driver DriverrsCount = (Driver)Class.forName(MM_conn_DRIVER).newInstance();
        
Connection ConnrsCount DriverManager.getConnection(MM_conn_STRING,MM_conn_USERNAME,MM_conn_PASSWORD);
        
PreparedStatement StatementrsCount ConnrsCount.prepareStatement("SELECT * FROM sms_facturacion.users ");
        
ResultSet rsCount StatementrsCount.executeQuery();
        
    
        
// Creamos el Estilo del Font a Utilizar en el nombre de las columnas
                
HSSFFont font wb.createFont();
                
font.setFontHeightInPoints((short)10);
                
font.setFontName("Arial");
                
//font.setItalic(true);
                //font.setStrikeout(true);
                
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
                
                
HSSFCellStyle style wb.createCellStyle();
                
style.setFont(font);

        
//Creamos el Metadata del Resulset
        
ResultSetMetaData rsmd rsCount.getMetaData();
                
int numberOfColumns rsmd.getColumnCount();

        
//Obtenemos el nombre de las columnas        
                
for (int m=1m<numberOfColumnsm++){
                
                
                
HSSFRow row0 sheet1.createRow((short)0); //crea el renglon
                
HSSFCell cell0 row0.createCell((short)m); //crea la celda tipo
                
String columname rsmd.getColumnName(m); //obtenemos el nombre de la columna del resulset
                
row0.createCell((short)m); // crea las celdas de acuerdo al numero de columnas
                
cell0.setCellValue(columname); //vacia el nombre de las columnas en la hoja de excell
                
cell0.setCellStyle(style); // Asigna el estilo del nombre de las columnas
        
                
}
                    
        
//Vaciamos el resulset al archivo de excell    
            
int i=0;
            while (
rsCount.next()) //mientras tenga algo el resulset
            
{
                
i++; // vairable i se inicia con valor 1 porque el resultset inicia con valor 1 de las columnas
                
HSSFRow row sheet1.createRow((short)i); //crea el renglon
                
HSSFCell cell row.createCell((short)1); //crea la celda tipo
                
for (int q=1q<numberOfColumnsq++) 
                {
                  
row.createCell((short)q).setCellValue(rsCount.getString(q)); //vacia el resulset en la hoja de excell
                
}
                
            }    
    
// Cerramos el archivo de excell
    
wb.write(fileOut);
    
fileOut.close();
// Cerramos el Resulset      
    
rsCount.close();
    
StatementrsCount.close();
    
ConnrsCount.close();   
    } catch ( 
IOException ex ) {
            
ex.printStackTrace();
      
   } 
%>


<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
title>::Hoja de calculo::</title>
</
head>

<
body>
Hoja de calculo creada con exito 
__________________
Aquí va la firma...

Última edición por ko^ke; 11/10/2004 a las 12:24
  #2 (permalink)  
Antiguo 24/09/2004, 10:46
Avatar de hugo777  
Fecha de Ingreso: enero-2002
Ubicación: Lima, Perú
Mensajes: 757
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola, muy buena contribución.

__________________
Saludos,

H@C..
  #3 (permalink)  
Antiguo 24/09/2004, 14:24
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola ko^ke gracias por la aportación

A modo informativo os cuento que si volcaís cada fila del resultset en un fichero de texto plano separando las columnas por tabuladores y le poneís al fichero la extensión .xls también lo abre el excel sin problemas.
Código:
columna1	columna2
info1		info2
asas		asdfas
Claro que con este método mucho mas rudimentario que utilizar POI no se pueden modificar el formato de la celda, cosa que si se puede hacer con POI.

Saludos
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495

Última edición por kripton; 24/09/2004 a las 14:26
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:09.