Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/10/2012, 02:18
saroaes
 
Fecha de Ingreso: octubre-2012
Mensajes: 8
Antigüedad: 12 años, 1 mes
Puntos: 0
Exclamación Crear un excel de 15000 líneas con POI

Buenos días

Tengo una función Java que me vuelca el contenido de un Resultset en un fichero Excel. El problema es que en recorrer el Resultset para hacer el volcado me tarda más de 15 minutos. Conocéis alguna forma de hacer un volcado directo del resultset al excel sin necesidad de recorrerlo?

Os pego el código en el que recorro el resultset


Código:
String sentencia = "select mes,anno,.... (18 campos) from tabla";
st = con.prepareStatement(sentencia);
rs = st.executeQuery();
while (rs.next()) {
contador++;

// hash = new Hashtable();
// se crea una fila por cada fila recuperada de la BBDD
HSSFRow fila = hoja1.createRow((short) contador);
HSSFCell celda = null;
celda = fila.createCell(0, HSSFCell.CELL_TYPE_STRING);
celda.setCellStyle(estiloCelda);
celda.setCellValue(mes);

//Este proceso lo repito para cada una de las 18 columnas que tiene el excel


}
libro.write(fichero);
response.setContentType("application/excel");
response.setContentLength(fichero.size());
String nombre = bean.getHospital()+"-CuadroFacturacion"+mes+anio;
response.setHeader("Content-disposition","attachment; filename="+nombre+".xls");
ServletOutputStream out = response.getOutputStream();
fichero.writeTo(out);
out.flush();
}

He estado probando y la consulta me tarda en ejecutar: 11349680465179 milisegundos... por tanto entiendo que no es demasiado ya que devuelve 20.082 registros.

El punto en el que se queda pillado es en el recorrido del ResultSet para ir incluyendo cada dato al excel por filas

Muchísimas gracias por vuestra ayuda estoy bloqueada!!

Un saludo