Exportar tablas HTML a Excel con PHP y JQuery
22 COMENTARIOS - Publicado hace 11 meses - Clasificado en: PHP, TUTORIALES, EXCEL, JQUERY, SNIPPETSEn un post anterior vimos cómo usando una clase podíamos Crear hojas de cálculo Excel con PHP. En este post vamos a ver cómo utilizar jQuery para exportar los datos de una tabla a Excel. El tutorial es una adaptación de lo explicado en un post de TopSEMLTips. Lo primero que necesitamos es importar jQuery:
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
Lo siguiente es tener una tabla en HTML que deseamos exportar a Excel. Puesto que luego lo utilizaremos, necesitamos asignarle un identificador a la tabla, por ejemplo id="Exportar_a_Excel".
<table id="Exportar_a_Excel">
<tr>
<td>Celda1</td>
<td>Celda2</td>
<td>Celda3</td>
<td>Celda4</td>
<td>Celda5</td>
</tr><tr>
<td>Celda6</td>
<td>Celda7</td>
<td>Celda8</td>
<td>Celda9</td>
<td>Celda10</td>
</tr>
</table>
Lo siguiente es crear un formulario, también con un identificador para almacenar el contenido de la tabla en un campo oculto y posteriormente enviarlo al php que generará la hoja de cálculo.
<form action="ficheroExcel.php" method="post" target="_blank" id="FormularioExportacion"> <p>Exportar a Excel <img src="export_to_excel.gif" class="botonExcel" /></p> <input type="hidden" id="datos_a_enviar" name="datos_a_enviar" /> </form>
Ahora necesitaremos volcar toda la tabla en el campo oculto y enviar el formulario. Para ello nos servimos de jQuery:
<script language="javascript">
$(document).ready(function() {
$(".botonExcel").click(function(event) {
$("#datos_a_enviar").val( $("<div>").append( $("#Exportar_a_Excel").eq(0).clone()).html());
$("#FormularioExportacion").submit();
});
});
</script>
El fichero php recogerá el contenido del campo oculto "datos_a_enviar" y lo mostrará con el content-type apropiado. Así pues, ficheroExcel.php sería:
<?php
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=ficheroExcel.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $_POST['datos_a_enviar'];
?>
Ver ejemplo en funcionamiento » »
Descargar ejemplo completo » »
Algunas entradas relacionadas:
- PclZip: clase para trabajar con ficheros zip en php
- Alternar colores en las filas de una tabla con PHP
- Crear hojas de cálculo Excel con PHP
- highlight_file: resaltar código PHP
- Forzar la descarga de imágenes con PHP
- Mostrar tablas y campos de una base de datos MySQL con PHP
- Mostrar los valores de un array con PHP
También te puede interesar:
| HipChat: servicio para crear salas de chat privadas para empresas | 101 Portafolios fantásticos | +350 texturas grunge | Crear un icono de libreta de direcciones | 100 fondos de Twitter con ilustraciones |
COMENTARIOS
|
|
Publicado hace 12 meses Javier Martinez - http://www.publicacionesdigitales.net En el ejemplo, se abre el excel, pero las tablas estan vacias... |
|
|
Publicado hace 12 meses Francisco - http://www.webintenta.com A mà se me abre la tabla con las celdas. Qué versión de Office tienes? |
|
|
Publicado hace 11 meses wilson zauma - sabes el ejemplo completo no esta disponible ademas en el ejemplo q muestras no graba la tabla solo graba el nombre del doc excel mas no los datos y eso no se xq. no se si puedes pasar un ejemplo un poco mas completo . gracias |
|
|
Publicado hace 11 meses Francisco - http://www.webintenta.com Corregido. Ya dispones el ejemplo completo para su descarga. Saludos. |
|
|
Publicado hace 11 meses Miki - Hola. El ejemplo solamente me funciona en Chrome. En Mozilla, IE 6 y IE 7 no funcionan. Tengo Excel 2002. Es una lástima porque me irÃa muy bien este script. Gracias. |
|
|
Publicado hace 11 meses Francisco - http://www.webintenta.com Debe ser cosa de la versión de Excel. Yo con Office 2007 me funciona correctamente en IE y Firefox. Cuando tenga un rato haré un tutorial para exportar de PHP a CSV. Saludos. |
|
|
Publicado hace 11 meses Miki - Hola de nuevo. Resulta que colgado en Internet si funciona en todos los navegadores. En localhost me pasa lo que he escrito antes (igual es cosa de mi ordenador). Bueno, mejor que funcione en el servidor remoto y no en local que viceversa. Gracias Francisco, me gusta mucho tus posteos, sigue asÃ. |
|
|
Publicado hace 11 meses Francisco - http://www.webintenta.com Me alegro de que al final te haya sido de utilidad. Saludos. |
|
|
Publicado hace 11 meses Alvaro - Funciona con cualquier versión de excel y en localhost cuando se utiliza la función stripslashes() en la salida de "datos_a_enviar": $tabla=$_POST['datos_a_enviar']; echo stripslashes($tabla); saludos |
|
|
Publicado hace 10 meses Ricardo - Hola! A mi me funcionó de mil maravillas; tengo la Suite Office 2007 y cero rollo. Ahora, una pregunta, es posible hacer lo mismo per que el sistema extraiga la data almacenada en una base de datos MySQL y la exporte a un Excell?? ¿Y qué tal con hacer lo mismo pero con documentos Word y PDF?? Se que eso suele hacerse con librerÃas php, pero los ejemplos que he encontrado en diversos sitios son, por decir lo menos, muy malos e ineficientemente desarrollados. Gracias y felicitaciones por tu magnÃfio sitio Web. Ya es mi favorito. |
|
|
Publicado hace 9 meses Juan Ruiz - Felicitaciones excelente tutorial me funciono muuy bien, pero tengo un problema. estoy haciendo consultas con mysql a una tabla determinada pero esta tabla x se me multiplica por varios datos entonces al momento de exportar a excel solo me muestra la primera tabla y las demas no, porque no me muestra las demas si tienen el mismo nombre? |
|
|
Publicado hace 8 meses CHRISTIAN - Juan, no se bien que es lo que deseas, pero por lo que entiendo, no has probado nombrar las tablas de diferente forma y llamar todas mediante el script? es lo que se me ocurre. Ahora, yo tengo un pequeño problema, hay 2 campos que no deseo que se exporten, como lo hago? intente lo sig: Imprimir esos 2 datos en otra tabla, el problema es que tengo otro script para poder "sortear" los datos, entonces cuando hago eso, dichos datos pierden congruencia, no se si me explique, ojala alguien haya hecho algo parecido, Fancisco, gracias por el post. Saludos |
|
|
Publicado hace 7 meses CHRISTIAN - Solucione mi problema anterior, ahora tengo otro detalle, cuando doy clic para que genere el archivo, me cierra la sesion actual, como puedo solucionar esto? |
|
|
Publicado hace 6 meses Inti - Tambien me funciona solo en Chrome :(... que puede ser? plis necesito ayuda... es el mejor metodo que he encontrado pero no me funka en todos lados.. ayuda plisss |
|
|
Publicado hace 6 meses Inti - Hola, a mi me pasa lo que decia "Miki" de que solo se veia en Chrome, en internet, con su ejemplo y en mi servidor igual.. que puede ser? Saludos |
|
|
Publicado hace 5 meses Pablo - http://www.estudio.avilacamps.com.ar/ NecesitarÃa un script o herramienta que me convierta una tabla excel a html pero que sea interactiva, es decir que se puedan seguir utilizando las formulas e ingresando datos, saludos |
|
|
Publicado hace 4 meses estrick - Sabes. Acabo de probarlo y me funciona llevaba tiempo atorado buscando como exportar una simple tabla y no podia hacerlo y recien lo consegui gracias a tu ayuda. Solo queda decir Gracias =) |
|
|
Publicado hace 4 meses sdarknot - alguien sabe como mostar el excel en un php por favor cualkier ayuda me la podrian mandar al msn sdarknot@gmail.com desde ya gracias xD ..... |
|
|
Publicado hace 3 meses miguel - BuenÃsimo, hace dÃas buscaba algo asÃ. Sólo tengo un problema: Tildes y Ñ, alguna forma de resolverlo? En la exportación tildes y Ñ son reemplazadas por caracteres irreconocibles. Nuevamente muchas gracias |
|
|
Publicado hace 3 meses christian - el script funciona perfecto, pero tengo un problema no me pasa todos los datos de la tabla solo unos 10 celdas, si me pueden ayudar, si sirve de algo la tabla la armo con la funcion sorttable de jquery |
|
|
Publicado hace 2 meses Rigo - El script me funciono perfectamente tanto en localhost como enel servidor, ademas funciona muy bien en IE y Mozilla, justo lo que necesitaba, me a horro mucho tiempo, ya que lo pensaba hacer solo con php. y volver hacer la consulta para generar la tabla nuevamente, que no le vi practico. muchas gracias por el aporte. Saludos |
|
|
Publicado hace 1 mes Jorge - Exelente... Me salvaste el ramo con esto.-. jajajajaj . Gracias por el aporte. |
|
|
Publicado hace 1 mes ricardo - No veo las fechas de los comentarios. Muy buen script! Para Miguel por las ñ's y acentos: echo stripslashes(utf8_decode($_POST['datos_a_enviar'])); |
|
|
Publicado hace 3 semanas Jose Miguel - A mi me funciono perfecto, lo unico es que tengo un valor que viene desde la base de datos de la siguiente forma: 1-2 q no son fechas, pero cuando abro el documento en excel los coloca como 01-feb y esa celda se coloca en formato de fecha. Como hacer para que no pase esta situacion? |
|
|
Publicado hace 3 semanas Luis Rodrigo - Gracias por el aporte, pero yo lo uso en el wamp localmente con localost y todo funciona perfecto, pero cuando lo subo a mi sitio, aparece en blanco, me pueden ayudar por favor Gracias |





















diseño web valencia en 500 iconos gratuitos para tus aplicaciones web



