entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Como Exportar una tabla en jsp a Excel

Que tal Compañeros he investigado ya varios cosas en google sobre como exportar una tabla en jsp a un archivo excel..
pero e ensayado con algunas formas y no me da... tengo un boton que cuando le dan click trae la consulta des de la DB y tengo otro boton que dice exportar el cual maneja este evento

onclick="$("#tblGeneradorComercial tbody").tableExport({type: 'excel', escape: 'false'});"

con esto se supone que deberia exportar a excel. Pero no me da. he intentado de una y otra forma y no encuentro solucion alguien porfavor me podria decir que plugin utilizar sencillo para exportar a excel una tabla jsp no cargada .. ?
EL Plugin que estoy utilizando en estos momentos es este :

http://ngiriraj.com/pages/htmltable_export/demo.php

Por favor algun plugin que pueda utilizar ? y me salga bien recordar que mi jquery lo tengo no en el lado del cliente .
Muchas gracias por ayudarmen. su ayuda es de mucha importancia

2 Respuestas

2votos

cobasESP Puntos19560

Yo lo que haría, seria crear un bucle, cogiendo todos los datos de la tabla en java, y por cada fila, cogería cada dato de cada celda y lo escribiría en una variable linea, separados por ";", y así linea por linea, cada linea la iría concatenando a una variable total, y cuando todos los registros acabasen, abriría un nuevo FileOutPutStream, y crearia un archivo .csv (delimitado por comas).
Estos archivos se pueden abrir en excel perfectamente, ya en excel puedes guardar como .xls o lo que te venga mejor.

String todo = "";
String cabecera = "columna1;columna2;columna3;columna4\n";
while(//filas en tabla){
     String linea = "";
     //recojo datos de la tabla
     linea = datos1+";"+datos2+";"+datos3+";"+datos4+"\n";
     //Por ejemplo la recogida de datos la haces como mas te convenga.
     //finalmente añadimos la linea al total
     todo = todo + linea;
}

//Una vez acabe el bucle tenemos en todo, todos los registros separados por ";" y por saltos de carro.

try(FileOutputStream fos=new FileOutputStream("D:\\fichero.csv")){
            String ficherototal = cabecera+todo;
            fos.write(ficherototal);
            fos.close();
        }catch(IOException e){

        }

Asi a mi me funciona, alguna que otra vez he tenido que hacer algo como esto. Espero que te sirva a ti tambien.

2votos

ankeorum Puntos7230

Y qué tal si cuando haces click en ese botón generas un archivo excel con la misma consulta de la base de datos que previamente has traído a pantalla?

Es decir, tienes la consulta guardada en una variable tal que $consulta sería la misma consulta que utilizaste y se cargó en la página que el usuario ve.

Cuando haces click en el botón lo que haces es generar un archivo excel tal que así:

$PageTitle = "Excel Report";

header("Content-Disposition: attachment; filename=".$PageTitle." - ".date(Ymd).".xls"); 
header("Cache-Control: public"); 
header("Pragma: public"); 
header("Pragma: ");
header("Cache-Control: ");
header("Content-Type: application/octet-stream");
header('Pragma: anytextexeptno-cache', true); // For IE8
header("Content-Type: application/vnd.ms-excel"); 

$result2 = sqlsrv_query($dbh,$consulta);

echo "<table>";

//Headers de la consulta                
$headers = array('Header1', 'Header2', 'Header3');
echo "<tr>";
foreach($headers as $mycol) 
{
    echo "<td><strong>".$mycol.'</strong></td>';
}
echo "</tr>";

while($row = sqlsrv_fetch_array($result2))
{
    //Ahora vamos a guardar en un array las columnas de la consulta
    $myarray = array($row{0},$row{1},$row{2},$row{3},$row{4},$row{5});

    echo "<tr>";
    foreach($myarray as $mycol) 
    {
        //Ahora pintamos los elementos del array previamente guardado cada uno en una celda
        echo "<td>".$mycol.'</td>';
    }
    echo "</tr>";
}
echo "</table>";

No sé si eso te valdrá...

SaludoS!

-1voto

vianey comentado

Gracias por comentar pero si necesito alguna otra forma ojala que todo el codigo sea en el jquery y no en el lado del cliente, Igual te agradezco muchisimo por responder Saludos..

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta