Los ficheros CSV (abreviatura de comma-separated values) son de gran utilidad, dado que nos permiten importar y exportar datos fácilmente en un formato libre que puede ser abierto por casi cualquier hoja de cálculo.
Para el ejemplo de generación de CSV vamos a suponer que habéis lanzado una consulta contra una base de datos SQL y ya tenéis los datos recuperados en el array pertinente (en este caso le llamaré $datos en el ejemplo), pero además de imprimirlos en pantalla tenéis que exportarlos a un formato con el que pueda trabajar, por ejemplo, Excel (cuando estaba en Nática tuve que hacer algo similar pero con ASP). Bueno, pues la cosa iría como en el siguiente ejemplo:
$file = fopen("exportacion.csv","w"); //abrimos el archivo csv para escritura
$s = ","; //establecemos un separador
while($registro = mysql_fetch_array($datos) ) {
$fila = $registro['id'].$s.$regisro['nombre'].$s.$registro['telefono']."\n";
fwrite($file,$fila);
}
fclose($file);
Bueno, la cosa es simple. Primero abrimos el archivo (en este caso le llamé exportacion.csv) en modo de escritura. Establecemos una variable con un valor como separador (en este caso, la coma) y recorremos el array con un bucle while, creando una variable $fila con todos los datos que guardamos en cada iteración del bucle. Con todo esto ya tenemos generado nuesto .csv
Pero ¿y el caso contrario? ¿Y si lo que queremos es abrir un fichero csv desde nuestro php para imprimirlo en pantalla o para guardarlo en la base de datos? Bueno, en el siguiente ejemplo veremos como leer el archivo:
$file = fopen ( "exportacion.csv" , "r" );
while (( $data = fgetcsv ($file,1000,",")) !== FALSE ){
$i = 0;
foreach($data as $row) {
echo "registro $i: $row<br/>";
// Imprime toda la fila
$i++ ;
}
echo "<br/><br/>";
}
fclose ( $file );
Bueno, la explicación es rápida también. Primero abrimos el archivo de antes en modo lectura. Tras esto, usando la función fgetcsv recuperamos la información del archivo y con el bucle foreach recorremos todas las filas, en este caso imprimiéndolas. Podríamos, por ejemplo, usar la función split para partir la fila por las comas y acceder así a los valores por separado de cada una
En fin, espero que esto os sirva como ayuda e introducción para trabajar con estos archivos en php