
En algunos proyectos sea personales o de oficina, necesitamos generar archivos Excel y Word desde PHP. a diferencia de formatos abiertos (los que comúnmente maneja Libre Office y otras offimáticas libres) que tienen mayor documentación, los archivos de propiedad de Microsoft son muy cerrados lo que dificulta la documentación.
Generar archivo EXCEL desde PHP
Lo primero que tenemos que entender, es que una hoja de cálculo es una tabla gigante, por lo tanto cuando vayamos a exportar, lo que exportaremos es una tabla HTML.
Una tabla de ejemplo de algunos jugadores de mi equipo del alma Millonarios FC
<h1>Tabla de asistencias Pase-gol de los jugadores de Millonarios F.C.</h1>
<table cellspacing="0" cellpadding="0">
<tr>
<th>Pedro Franco</th>
<th>Wilson Carpintero</th>
<th>Álvaro Barros</th>
<th>Mayer Candelo</th>
</tr>
<tr>
<td>20</td>
<td>80</td>
<td>10</td>
<td>34</td>
</tr>
<tr>
<td>78</td>
<td>90</td>
<td>10</td>
<td>02</td>
</tr>
</table>
con esta tabla, procedemos a insertarle en la parte superior un código PHP que es el que generará el archivo de Microsoft Excel:
<?php
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=nombre_del_archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>
Lo único que tenés que cambiarle es donde dice: “nombre_del_archivo.xls” y ya, ese es el nombre del archivo que genera.
El código final nos quedaría así:
<?
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=nombre_del_archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");?>
<h1>Tabla de asistencias Pase-gol de los jugadores de Millonarios F.C.</h1>
<table cellspacing="0" cellpadding="0">
<tr>
<th>Pedro Franco</th>
<th>Wilson Carpintero</th>
<th>Álvaro Barros</th>
<th>Mayer Candelo</th>
</tr>
<tr>
<td>20</td>
<td>80</td>
<td>10</td>
<td>34</td>
</tr>
<tr>
<td>78</td>
<td>90</td>
<td>10</td>
<td>02</td>
</tr>
</table>
Guardás el archivo .php con el nombre que mirés adecuado, ejemplo tabla_jugadores_excel.php y lo abrís desde el la url normal, lo que te mostrará un cuadro de descarga del archivo excel que generó:

y listo
, el entenderá cualquier modificación que le hagás a la tabla.
Generar archivo WORD desde PHP
Es el mismo proceso del archivo Excel, la diferencia es que acá ya no manejamos tablas (igualmente si necesitás manejar tablas las podés poner que el las formateará y las mostrará), vamos a ver un código de ejemplo:
<h1>Datos de Millonarios F.C.</h1>
<ul>
<li>Puesto histórico: 1º</li>
<li>Temporadas en 1ª: 73 (Todas desde el inicio del profesionalismo 1948-2011).4</li>
<li>Temporadas en 2ª: Ninguna.</li>
<li>Mayor goleada conseguida:</li>
<li>En campeonatos nacionales: 8-3, contra Deportes Tolima (7 de julio de 1963).
En torneos internacionales: 6-0, contra Universidad de Chile (8 de mayo de 1960) y Espanyol de Barcelona (11 de febrero de 1953).</li>
<li>Mayor goleada en contra:
En campeonatos nacionales: 0-6, contra Independiente Medellín (24 de julio de 1966)
En torneos internacionales: 1-5, contra Independiente de Avellaneda (7 de junio de 1964).
Gol 1.000: Marino Klinger
Gol 2.000: Óscar Villano
Gol 3.000: Juan Gilberto Funes
Gol 4.000: Néstor Villarreal
Gol 4.500: Orlando Ballesteros</li>
<li>Mejor puesto en la liga: 1º (13 veces, en 1949, 1951, 1952, 1953, 1959, 1961, 1962, 1963, 1964, 1972, 1978, 1987 y 1988).</li>
<li>Peor puesto en la liga: 17º (1 vez, en el 2004-II)53
Máximo goleador: Alfredo Castillo 133 goles (por Campeonato Colombiano)54
Mejor jugador de su historia: Alfredo Di Stéfano (151 goles en 172 partidos disputados del 14 de agosto de 1949 al 19 de febrero de 1953).</li>
<li>Jugador que ganó más títulos: Francisco "Cobo" Zuluaga con 6 Campeonatos de la Primera A (1949, 1951, 1952, 1953, 1959 y 1961) y 1 Copa Colombia (1952-53).</li>
<li>Mejor temporada: 1949, en 28 partidos, gano 22, empato 4 y solo perdió 2, marco 107 goles y tan solo le marcaron 37, para sumar 48 puntos (70 puntos de la actualidad).9</li>
<li>Portero con mayor invicto: Otoniel Quintana, 1.024 minutos sin recibir gol (Récord en el fútbol profesional colombiano). Entre el 12 de septiembre y 14 de noviembre de 197155</li>
<li>Mayor racha sin perder: 29 partidos en 1999 (Récord en el fútbol profesional colombiano)56</li>
</ul>
Como podemos ver, ese es un ejemplo html normal con el que vamos a trabajar, ahora le agregamos la parte php que es la que nos generará el archivo para Microsoft Word
<?
header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=millonarios_fc.doc");
header("Pragma: no-cache");
header("Expires: 0");
?>
Lo único que tenemos que hacer es cambiar el nombre de: millonarios_fc.doc por el que deseemos y ya.
el código quedaría así:
<?
header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=archivo.doc");
header("Pragma: no-cache");
header("Expires: 0");
?>
<h1>Datos de Millonarios F.C.</h1>
<ul>
<li>Puesto histórico: 1º</li>
<li>Temporadas en 1ª: 73 (Todas desde el inicio del profesionalismo 1948-2011).4</li>
<li>Temporadas en 2ª: Ninguna.</li>
<li>Mayor goleada conseguida:</li>
<li>En campeonatos nacionales: 8-3, contra Deportes Tolima (7 de julio de 1963).
En torneos internacionales: 6-0, contra Universidad de Chile (8 de mayo de 1960) y Espanyol de Barcelona (11 de febrero de 1953).</li>
<li>Mayor goleada en contra:
En campeonatos nacionales: 0-6, contra Independiente Medellín (24 de julio de 1966)
En torneos internacionales: 1-5, contra Independiente de Avellaneda (7 de junio de 1964).
Gol 1.000: Marino Klinger
Gol 2.000: Óscar Villano
Gol 3.000: Juan Gilberto Funes
Gol 4.000: Néstor Villarreal
Gol 4.500: Orlando Ballesteros</li>
<li>Mejor puesto en la liga: 1º (13 veces, en 1949, 1951, 1952, 1953, 1959, 1961, 1962, 1963, 1964, 1972, 1978, 1987 y 1988).</li>
<li>Peor puesto en la liga: 17º (1 vez, en el 2004-II)53
Máximo goleador: Alfredo Castillo 133 goles (por Campeonato Colombiano)54
Mejor jugador de su historia: Alfredo Di Stéfano (151 goles en 172 partidos disputados del 14 de agosto de 1949 al 19 de febrero de 1953).</li>
<li>Jugador que ganó más títulos: Francisco "Cobo" Zuluaga con 6 Campeonatos de la Primera A (1949, 1951, 1952, 1953, 1959 y 1961) y 1 Copa Colombia (1952-53).</li>
<li>Mejor temporada: 1949, en 28 partidos, gano 22, empato 4 y solo perdió 2, marco 107 goles y tan solo le marcaron 37, para sumar 48 puntos (70 puntos de la actualidad).9</li>
<li>Portero con mayor invicto: Otoniel Quintana, 1.024 minutos sin recibir gol (Récord en el fútbol profesional colombiano). Entre el 12 de septiembre y 14 de noviembre de 197155</li>
<li>Mayor racha sin perder: 29 partidos en 1999 (Récord en el fútbol profesional colombiano)56</li>
</ul>
Y listo, es así como podemos generar estos archivos de forma fácil y sin tanto rodeo. espero que les sirva, cualquier comentario abajo.