Exportar datos de PHP a un archivo CSV

Te cuento que tengo un problema que no me deja dormir...
¿Tengo un reporte en PHP y quisiera colocar un link o botón el cual me permita exportar esos datos a un archivo csv. Hay algún script que me permita hacerlo?, ¿O comandos de PHP?.

1 Respuesta

Respuesta
1
Puedes exportar datos de una consulta sobre una base de datos de forma muy sencilla. El script sería el siguiente:
$f = fopen("reporte.csv","w");
$separador = ";";
while($reg = mysql_fetch_array($datos) ) {
$linea = $reg['campo1'] . $separador . $reg['campo2'] . $separador . $reg['campo3']; fwrite($f,$linea);
}
fclose($f);
Como ves es muy sencillo realizar una consulta e ir guardando los datos obtenidos en un fichero de texto donde cada campo está separado por el carácter $separador. El ejemplo usa solo tres campos, pero puedes poner todos los que quieras.
Si no es esto lo que quieres, puedes buscar algún script que se adapte mejor a tus necesidades en:
http://www.hotscripts.com/search/3513688.html
Si no encuentras lo que necesitas, coméntame con más detalle cómo generas el reporte.
Wao, muchas gracias, te comento que aplique el script que me mandaste a mi código y me genera un archivo .csv, en este caso: reporte.csv, y el excel jala a la perfección los datos del archivo.
Peor quisiera una sugerencia tuya, mira mi código es así:
echo "<table>";
$f = fopen("reporte3.csv","w");
$separador = ";";
do{
$linea = $row['fecha_i']. $separador.$row['observaciones']. $separador.$row['tipos'];
fwrite($f,$linea);
echo "<tr><td>".$row['fecha']."</td></tr>";
echo "<tr><td>".$row['observaciones']."</td></tr>";
echo "<tr><td>".$row['tipos']."</td></tr>";
}while ($row= mysql_fetch_assoc($listar));
echo "</table>";
fclose($f);
Entonces cada vez que se genera mi reporte genero mi archivo .csv... lo malo es que cuando genero otro reporte me sale Warning: fopen(reporte3.csv): failed to open stream: Permission denied
¿Permission denied?, ¿Tengo qué poner user y pass para que regrabe el archivo?, por fa ayudame.
Gracias por todo.
El problema está en el modo en que se abre el archivo. Al usar fopen se le tiene que indicar detrás del nombre del fichero lo que queremos hacer con él. Las posibilidades son las siguientes:
r = abre el fichero para solo lectura
r+ = lectura y escritura colocando el cursor al principio
w = solo escritura
w+ = lestura y escritura borrando todo el contenido que tuviese antes
a = solo escritura colocando el cursor al final sin borrar el contenido que tuviese
a+ = lectura y escritura colocando el cursor al final sin borrar el contenido anterior
Existen algunos modos más aparte de esos, pero ya tienes suficientes. Si lo que pretendes es sólo escribir en el fichero permitiendo añadir más, lo adecuado sería usar:
$f = fopen("reporte3.csv", "a");
y si pretendes leer y escribir permitiendo añadir más, puedes suar:
$f = fopen("reporte3.csv", "a+");
Si, ... funciona!.
Muchas gracias por tu ayuda. Ya eres mi experto favorito.
Chau, que te vaya de maravilla... y una vez más gracias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas