PHP - Exportar tabla html a excel

   
Vista:

Exportar tabla html a excel

Publicado por jmuoz (21 intervenciones) el 14/04/2014 22:47:52
Buenas tardes tengo un problema con un codigo ya que necesito exportar una tabla de html a excel con un button pero al momento que mando a llamar al codigo en el input me da como resultado un doc excel sin nada y deberia de mandarlo con info, pero si junto el archivo en la cabecera del Inicio.php si me exporta el excel pero como tengo una lista desplegable cada vez que selecciono alguna opcion descarga sin mostrarme en pantalla la info de la tabla pero si me exporta el contenido de la tabla quizas algo me esta fallando espero me puedan asesorar, dejo el ejemplo

Inicio.php
1
2
3
4
5
6
7
8
9
10
11
12
<form>
 <select name="lista" onChange="this.form.submit()" >
      <?php
            asort($filelist);
            echo "<option >-----Selecciona Archivo------</option>";
                while (list ($key, $val) = each ($filelist)){
                  echo "<option value='$val'>$val</option>";
                }
      ?>
        </select>
            <input type="button" onclick="window.location='genera.php'" value="Exportar">
</form>

export.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$dia=date('d_m_Y');
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: attachment; filename=reporte_$fecha.xls");
header('Pragma: public');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Transfer-Encoding: none');
//header('Content-type: application/vnd.ms-excel;charset=utf-8');// This should work for IE & Opera 
header('Content-type: application/x-msexcel; charset=utf-8'); // This should work for the rest 
header("Content-Disposition: attachment; filename=reporte_$dia.xls");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
 ?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Exportar tabla html a excel

Publicado por xve (5525 intervenciones) el 15/04/2014 08:13:12
Hola jmuoz, no entiendo muy bien lo que comentas, pero hay algo que no veo claro, y es que en esta linea:
1
<input type="button" onclick="window.location='genera.php'" value="Exportar">
no pasas el valor del select del formulario...

Para ello, yo lo realizaría con una función de javascript donde enviara el valor del select sin la necesidad de refrescar la pagina cada vez que selecciono una opción.


En el archivo export.php ten cuidado que tienes lineas repetidas...

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar tabla html a excel

Publicado por jmuoz (21 intervenciones) el 23/04/2014 01:52:03
Tengo mi expor.html donde tengo todo el contenido de la tabla y en otro archivo el php donde tengo los headers, estube intentando con un codigo hasta cierto punto hacia lo que necesitaba ya que seleccionaba la opcion del select y cada vez que seleccionaba se actualizaba entonces al dar clic en el boton se descargaba el archivo de excel pero solo me mostraba el contenido del select no de la tabla, espero se entienda mejor lo que quiero hacer y por supuesto saber en que estoy mal.

expor.html
1
2
3
4
5
6
<select name="lista" onChange="this.form.submit()" >
      <?php
            Lista();
      ?>
        </select>
        <input type="button" value="Exportar" id="Exportar" name="Exportar" onclick="window.location='descarga.php'" />

exporta.php
1
2
3
4
5
6
7
8
include('indexTAB.php');
 
$fecha=date('d_m_Y');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Transfer-Encoding: none');
header('Content-type: application/vnd.ms-excel;charset=utf-8');// 
header("Content-Disposition: attachment; filename=Reporte_$fecha.xls");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Exportar tabla html a excel

Publicado por xve (5525 intervenciones) el 23/04/2014 07:49:05
Hola jmuoz, viendo la parte que nos has pegado de tu código, lo que haces, es que al seleccionar una opción del <select> se envian los valores del formulario...

En el caso de la función Lista(), no sabemos que devuelve... en teoría te envía el value del option <option value="...">

Que devuelve la función Lista()?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar tabla html a excel

Publicado por jmuoz (21 intervenciones) el 23/04/2014 16:20:37
La funcion Lista contiene un directorio donde llamo archivos para ir cargados en el <select>, al momento que voy a exportar selecciono algun archivo y al dar clic en le boton llama al php donde tengo los headers y me descarga mi archivo excel el cual solo tiene la lista y no la tabla que deseo que me exporte me explico.

export.php
include('export.html');
$fecha=date('d_m_Y');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Transfer-Encoding: none');
header('Content-type: application/vnd.ms-excel;charset=utf-8');//
header("Content-Disposition: attachment; filename=Reporte_$fecha.xls");

En esta parte tengo que llamar una parte del codigo de mi export.html para que me muestre el contenido de la tabla por que al incluir el export.html solo me muestra el la lista y no lo demas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Exportar tabla html a excel

Publicado por xve (5525 intervenciones) el 23/04/2014 21:55:50
Si, si, lo entiendo, pero que parámetro pasas del formulario al archivo php?

En el archivo php, faltaría ver como creas el contenido, no? aquí solo nos muestras la cabecera.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar tabla html a excel

Publicado por jmuoz (21 intervenciones) el 25/04/2014 01:56:10
El archivo exporta.php solo contiene esto :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include('function.php');     //Aqui mando a llamar las funciones como la de la Lista y el recorrido del los archivos
$fecha=date('d_m_Y');
header('Pragma: public');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Transfer-Encoding: none');
header('Content-type: application/vnd.ms-excel;charset=utf-8');// This should work for IE & Opera 
header('Content-type: application/x-msexcel');
header("Content-Disposition: attachment; filename=Reporte_$fecha.xls");
 
 $captura= $_POST['lista'];
  abrir($captura);
?>

En la parte donde no sabia era esta: $captura= $_POST['lista']; abrir($captura); ya funciona me exporta los archivos a excel, ahora otro problema q tengo es en el form en el export.html ya que al dar click en el boton quiero que me exporte y no cuando seleccione un archivo, creo yo que el problema esta en esta parte <select name="lista" onChange="this.form.submit()" > ya que cada vez que selecciono una opcion me exporta el excel pero no con el boton, aparte de ello al cargar algun archivo no me muestra su respectiva tabla que contiene los datos de los archivos que obtengo del function.php en la misma pagina , dejo el codigo del html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form id="Form1" method="POST"  action="exporta.php">
         Selecciona un Archivo
     <select name="lista" onChange="this.form.submit()" >
      <?php
      include('function.php');
            Lista();
      ?>
      <input type="submit" name="Exportar" value="Exportar" onClick="this.form.action='exporta.php'">
        </select>
          <div><p>
       <?php
            if(isset($_POST['lista'])){
             abrir($_POST['lista']);
            }
       ?>
          </p></div>
          </form>

function.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Lista(){
      $dir = opendir("./Archivos" );
              while (($file = readdir($dir)) !== false){
                   if($file != ".." && $file != "."){
                       $filelist[] = $file;
                   }
              }
      closedir($dir);
          asort($filelist);
          echo '<option  align="center" > -Obten Archivo-</option>';
              while (list ($key, $val) = each ($filelist)){
                  echo '<option value='.$val.' select="selected" >'.$val.'</option>';
              }
}
Espero esta vez me pueda dar entender un poco mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar