martes, septiembre 13, 2016

Leer ficheros de Excel en formato CSV en PHP.

En teoría parsear un fichero separado por comas, como los que genera EXCEL, es fácil. Al final incluyo un poco de código de ejemplo que puede servir cómo punto de partida. Pero el problema es EXCEL En el Mac Excel genera un tipo de fichero .csv donde  PHP  no reconoce los finales de lineas.
La solución es usar la opción de Excel "guardar como" -> "Valores separados por comas de Windows".
Después de perder un buen rato para darme cuenta he pensado que mejor lo cuento para si le es de útil a alguien.
De nada.

Ah, el código de ejemplo, lee un archivo .cvs, lo carga en un array bidimensional y hace una impresión de prueba. En un fichero cvs estándar generado en un Mac meterá todas las filas en la fila 0. Grr


$csvFile = file("testcerealsWIN.csv");
// print_r($csvFile); // para debug
$data    = array();
$i       = 0;
// linea por línea parseamos el CSV y lo metemos en un array bidimensional $data[][]
while ($i < sizeof($csvFile)) {
    $row      = str_getcsv($csvFile[$i]);
    $data[$i] = $row;
    $i++;
}
// mostramos el array para ver que está bien
$i = 0;
while ($i < sizeof($data)) {
    print_r("___ROW ___________");
    print_r($i);
    print_r("________________");
    print_r($data[$i]);
    $i++;
}
?>