Como generar archivos separados por comas CSV en php



Los archivos separados por comas o archivos CSV son un formato comúnmente utilizado para compartir información con Hojas de cálculo como Excel. Afortunadamente, generar este tipo de archivos en PHP es una tarea sencilla.

Generar un archivo CSV y guardarlo en el servidor

Con el siguiente código podemos generar un archivo CSV separado por punto y coma. En el código indicamos el nombre y ruta del archivo.

Los datos que irán dentro del archivo están en un array llamado $ventas.

<?php
//Este array tiene la información a guardar en el archivo csv
$ventas = array( array('Enero',132.00),
                array('Febrero',346.00),
                array('Marzo',256.00)
              );
//Nombre y ruta del archivo en el servidor
$archivo = './ventas.csv';
$fh = fopen($archivo,'w') or die("No se puede abrir el archivo: $archivo");
foreach ($ventas as $venta) {
    if (fputcsv($fh, $venta, ";") === false) {
        die("Error al escribir en CSV");
    }
}
fclose($fh) or die("No se puede cerrar el archivo: $archivo");
 ?>

En mi caso Excel abre correctamente los archivos separados por punto y coma ; y no solo comas , por esa razón he agregado el tercer parámetro en la función fputcsv. Si en tu caso no te funciona con ; entonces solo debes borrar ese parámetro en la función fputcsv.

Generar un archivo CSV y descargarlo

Posiblemente, no necesitas guardar un archivo, sino descargarlo, en este caso solo debes hacer algunas modificaciones y usar un código como este:

<?php
// Decir a PHP que vamos generar un archivo que debe descargarse
header("content-type:application/csv;charset=UTF-8");
header("Content-Disposition:attachment;filename=datos_ventas.csv");
$ventas = array( array('Enero',132.00),
                array('Febrero',346.00),
                array('Marzo',256.00)
              );
$fh = fopen('php://output','w');
foreach ($ventas as $venta) {
    if (fputcsv($fh, $venta, ";") === false) {
        die("Error al escribir en CSV");
    }
}
fclose($fh);
 ?>

Lo importante en el código anterior son las dos instrucciones Header, ahí indico que el archivo es de tipo CSV y debe descargarse. En la segunda línea Header indico el nombre del archivo, en este caso datos_ventas.csv

Espero que estos ejemplos te sean de utilidad, si tienes alguna duda o sugerencia, puedes dejar un comentario abajo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *