Too Cool for Internet Explorer

Hojas de cálculo Excel con PHP

Hora y Fecha: Noviembre 2, 2004 @ 9:10 pm Autor: Moisés Maciá
Categorías:
1,477 views

He estado toda la mañana enredado haciendo un script en PHP que exportara los datos desde la BD hacia una hoja de calculo.
Desde el principio enfoque mis esfuerzos a exportar los datos en formato CSV, que no es mas que toda la retahíla de datos separados por comas y retornos de carro. Esto funciona pero queda bastante pobre ya que se pierden los formatos de celda (por ejemplo si los datos están en negrita, centrados o pintados con algún color).

He descubierto un método bastante simple con el que exportar los datos y su formato y que funciona tanto en Microsoft Excel como en OpenOffice.Org. El truco consiste en enviar las cabeceras MIME de un archivo Excel y a continuación todos los datos formateados en una tabla HTML de toda la vida.


header("Content-type: application/vnd.ms-excel");
header("/2004/11/02/hojas_de_clculo_excel_con_php/Content_Disposition_attachment_filenameexcel.xls");

Simple y elegante, ahora lo difícil es leer desde el archivo Excel …





« Anterior post: Estadisticas del mes de Octubre | Próximo post: Camaleón CSS »

27 Comentarios para “Hojas de cálculo Excel con PHP”

Azu
15 de Noviembre de 2004 a las 1:23 pm    

Sabes como puedo abrir un documento excel en horizontal.
Muchas gracias.
Un saludo azu.

Moises
15 de Noviembre de 2004 a las 7:23 pm    

En realidad yo no utilizo Excel, en el trabajo que estoy realizando necesitaba utilizar un formato compatible para exportar las tablas a una hoja Excel (el cliente si lo utiliza). Primero lo hice con CSV pero no quedaba “bonito” así que utilice el truco que he comentado. Ahí termina mi relación con Excel :mrgreen:

mauricio
24 de Noviembre de 2004 a las 9:13 pm    

necesitaria saber si se puede sacar el entorno que tiene y dejar las celdas solas que estan escritas y remarcadas no necesito las celdas vacias ya que necesito que se muestre resultados de torneos y otra que no se pueda modificar ya que la version esta es como si pudieras escribir la planilla como su abrieras excel je :neutral:

Moises
24 de Noviembre de 2004 a las 10:48 pm    

No acabo de entender tu pregunta. Los datos se extraen de una base de datos y se compone una hoja excel, que más tarde se modifiquen o no realmente no importa porque los datos estan seguros en la base de datos.

mauricio
24 de Noviembre de 2004 a las 11:31 pm    

hola!
lo que realmente necesito es lo siguiente cuando inserto el codigo que se encuentra mas arriba le doy que use la plantilla de excel que tengo llamado torneo1.xls por ejemplo pero me aparece los numeros y letras de arriba y del costado izquierdo mas las barras y las opciones de fuentes de letra y se puede modificar lo que necesito que usando la planilla que tengo torneo1.xls aparesca la planilla con los nombres y puntajes y el formato de letra y colores que le di ademas del color o grosor de las celdas para que se note mas las celdas vacias no las necesito. eso queria saber si se puede hacer
desde ya gracias

Moises
25 de Noviembre de 2004 a las 1:57 am    

Lo que tu quieres es hacer el proceso contrario al que yo explico. No se si se puede, supongo que habra alguna clase por ahi que lea archivos .xls pero ni idea.

maritza elizabeth ovando gomez
29 de Noviembre de 2004 a las 8:27 pm    

hola. estoy estudiando derecho pero estoy llevando unas clases de informatica y me dejaron investigar una unidad que se llama hoja de calculo(excel) pero en esta unidad trae algunos temas como este: otras hojar de calculo, herramientas, insercion de valores, distintos tipos de seleccion para la aplicacion de atributos, referencias,entre otras, me podria ayudar.:smile gracias

Moises
29 de Noviembre de 2004 a las 9:03 pm    

Como ya he dicho: yo NO utilizo Excel.

eriedi
7 de Diciembre de 2004 a las 4:16 pm    

hola

fepo
20 de Diciembre de 2004 a las 3:18 pm    

estoy trabajando en php tengo que enviar unos datoas de la base de la datos mysql a un documento de excel.
mi problema es que el documento de excel tiene un formato y cada vez que eporto lo datos excel se borra el formato

Moises
20 de Diciembre de 2004 a las 6:25 pm    

Excel guarda en un formato binario y cerrado, si quieres distribuir tus datos seria mejor pensar en otra alternativa mas flexible.

Milvus
9 de Marzo de 2005 a las 5:36 pm    

se conoce alguna manera de enviar por php cabezeras para exportar datos desde MySQL a archivos .sav de SPSS?

Marco Rivas
2 de Junio de 2005 a las 7:09 am    

hola,te queri pedir como gran favor si me puedes ayudar con el formato de los datos ya en excel,me explico ya logro exportar los datos ,pero al ver el archivo de excel ,estan todos juntos.
es por eso mi pregunta como puedo darles un orden en las celdas.
desde ya se agradece Marco Rivas.

Moises
2 de Junio de 2005 a las 12:50 pm    

Formatea los datos en una tabla HTML con las etiquetas table, tr y td. De la misma forma que si los fueras a ver en una pagina web.

Marco Rivas
3 de Junio de 2005 a las 3:08 am    

ok,gracias pero donde genero la tabla , para que me entiendas te dejo mejor el script ke utilizo,desde ya gracias.

$archivo=”archivo.xls”;
$sentencia=”select * from producto”;
$busca=mysql_query($sentencia,$conectarse);
while ($row = mysql_fetch_row($busca))
{
$a=”$row[0] \t”;
$a.=”$row[1] \t” ;
$a.=”$row[2] \t”;
$a.=”$row[3] \t”;
$a.=”$row[4] \n”;
echo $a;

$p=fopen(”$archivo”,”a”); //Apertura para sólo escritura;
if($p)
{
fputs($p,$a); //escribir el archivo
}
}

fclose($p);

echo “Ver archivo
?>

Moises
3 de Junio de 2005 a las 1:35 pm    

No, es mas facil que todo eso:

header(”Content-type: application/vnd.ms-excel”);
header(”Content-Disposition: attachment; filename=excel.xls”);

[table]
[tr] [th]Name[/th] [th]Code[/th] [/tr]
[tr] [td]pepito[/td] [td]545[/td] [/tr]
[tr] [td] juanito[/td] [td] 234[/td] [/tr]
[/table]

Y el propio navegador producira el archivo Excel.

Marco Rivas
4 de Junio de 2005 a las 3:01 am    

muchas gracias compadre,ni te imaginas todo lo que me costo hacer esto , ya que estaba trabajando con archivos y lograba con archivos ,pero al final me iba registrando todos los listados.
muchas Gracias..

victor
14 de Junio de 2005 a las 6:06 pm    

Logré exportar a excel, pero ahora necesito enviar informacion a otra hoja. me pueden ayudar por fa

gracias

Moises
14 de Junio de 2005 a las 8:19 pm    

Como ya dije, Excel es un formato propietario y cerrado. No trabajes con él sino quieres complicarte la vida.

julio cesar
8 de Julio de 2005 a las 1:23 am    

Hola Moises tengo problema con los header por favor explicame donde de colocan estos header, son los que van
del documento html o van en el codigo php tal cual; lo que sucede es que siempre me da un error “Can not add header information - headers already send by” te agradeceria que me ayudes.

Moises
8 de Julio de 2005 a las 1:31 am    

Ese es un fallo típico, la instrucción header hace referencia a las cabeceras del protocolo HTTP y debe ser lo primero que imprimes en el script PHP.

Cuando modificas las cabeceras tal como muestro en la nota lo que estas haciendo es decirle al navegador que lo que va a procesar no es una pagina web, es una hoja de calculo.

Si haces un echo o pones un retorno de carro antes, PHP envia las cabeceras automáticamente y te da ese fallo porque no puedes modificar algo que ya se le ha enviado al cliente.

Eduardo
7 de Octubre de 2005 a las 6:52 pm    

Buenos Días:

Bueno a continuacion le comento lo que estoy laborando, esperando tener ayuda por parte de ustedes…

Estoy realizando páginas en PHP, y despliego información por medio de una consulta hacia una base de datos de SQL…

Lo que deseo realizar es poder exportar toda la información obtenida y desplegada en pantalla a un archivo de formato en excel… alguien tiene la funcion con la que puedo realizar dicha exportacion.

Gracias.

Hardsolo
11 de Noviembre de 2005 a las 10:00 pm    

Como lo hago para abrir multiples hojas en un mismo archivo

Edison
13 de Enero de 2006 a las 3:21 pm    

Hola tengo problema con esa cadena de transformacion de excel… En un office 2003 la informacion desplegada se distorciona…
Por ejemplo
el contenido de una celda es: 2.313541
y cuando hace la exportación se transforma a: 2313.541

axiste alguna otra forma de hacer una exportación a excel sin conplicarse mucho…

Jorge
23 de Julio de 2006 a las 2:43 am    

hola quisiera saber si alguien de los que a mirado esta web o tu mismo Moises conoce o ha hecho lo contrario a lo que muestras en tu web, es decir, lo que hiciste de la exportacion lo he hecho y efectivamente es una forma muy “limpia” de hacerlo, pero estoy trabado porque quiero hacer lo contrario, que desde una interfaz en la cual manejo mi database mysql pueda importar una tabla de excel y almacenarla en mi database

Antonio
22 de Noviembre de 2006 a las 9:41 pm    

Hola, quería saber si moisés sigue aportando sus ideas en este Blog. Ya que veo que no ofrece respuestas desde hace 1 año.

Blog de Gragel » Archivos Excel en PHP
3 de Mayo de 2007 a las 12:24 pm    

[...] bien, un primer paso para generar un excel desde php lo encuentro de la mano de QuarkBlog. Para generar un fichero excel simplemente hay que cambiar las cabeceras MIME de la página para [...]


Bad Behavior has blocked 863 access attempts in the last 7 days.