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