validar separado procesar por listar leer ejemplo descargar con como comas cabecera archivo php csv row totals

separado - ¿Cómo puedo obtener el número total de filas en un archivo CSV con PHP?



procesar csv (9)

Aquí hay otra opción que usa file() para leer todo el archivo en una matriz, analizando automáticamente nuevas líneas, etc.

$fp = file(''test.csv''); echo count($fp);

Además, desde PHP5, puede pasar el FILE_SKIP_EMPTY_LINES ... para omitir las líneas vacías, si desea:

$fp = file(''test.csv'', FILE_SKIP_EMPTY_LINES);

Manual: http://php.net/manual/en/function.file.php

¿Cómo puedo obtener el número total de filas que hay en un archivo CSV usando PHP? Estoy usando este método pero puedo hacerlo funcionar correctamente.

if (($fp = fopen("test.csv", "r")) !== FALSE) { while (($record = fgetcsv($fp)) !== FALSE) { $row++; } echo $row; }


Cree una nueva referencia de archivo usando SplFileObject :

$file = new SplFileObject(''test.csv'', ''r'');

Trate de seek al máximo Int PHP puede manejar:

$file->seek(PHP_INT_MAX);

Entonces en realidad buscará la línea más alta que pueda en el archivo, está su última línea y la última línea + 1 es igual a sus líneas totales:

echo $file->key() + 1;

Difícil, pero esto evitará que cargues el contenido del archivo en la memoria, lo cual es muy bueno cuando se trata de archivos realmente grandes.


En caso de que esté obteniendo el archivo de un formulario

$file = $_FILES[''csv''][''tmp_name'']; $fp = new SplFileObject($file, ''r''); $fp->seek(PHP_INT_MAX); echo $fp->key() + 1; $fp->rewind();

Funciona como el encanto !!!!!!!!!!!!!!!!!!


Las filas CSV están separadas por saltos de línea. Por lo tanto, divida las filas por saltos de línea y obtendrá una matriz de filas, que es contable.

if (($fp = fopen("test.csv", "r")) !== FALSE) { $rows = explode("/n", $fp); $length = count($rows); echo $length; }


Sé que esta es una publicación antigua, pero he estado buscando en Google este problema y descubrí que el único problema con el código original era que necesitas definir $row fuera del bucle while , como esto:

if (($fp = fopen("test.csv", "r")) !== FALSE) { $row = 1; while (($record = fgetcsv($fp)) !== FALSE) { $row++; }

Por si acaso ayuda a alguien :) echo $ row; }


Sé que esto es bastante viejo, pero en realidad me encontré con la misma pregunta. Como una solución supondría usar la lógica específica de Linux:

$rows = shell_exec(''$(/bin/which cat) file.csv | $(/bin/which tr) "/r" "/n" | $(which wc) -l'');

NOTA: esto solo funciona para Linux y solo debe usarse si está 100% seguro de que su archivo no tiene celdas multilínea


Tratar

$c =0; $fp = fopen("test.csv","r"); if($fp){ while(!feof($fp)){ $content = fgets($fp); if($content) $c++; } } fclose($fp); echo $c;


count (archivo (''filename.csv'', FILE_SKIP_EMPTY_LINES));


$filename=$_FILES[''sel_file''][''tmp_name'']; $file=fopen($filename,"r"); $RowCount=0; while ((fgetcsv($file)) !== FALSE) { $RowCount++; } echo $RowCount; fclose($file);