2016-05-24 22 views
3

lesen Wie erste Zeile überspringen und bis zu fünf Reihen von csv in PHPWie erste Zeile überspringen und bis zu fünf Reihen von csv in PHP

Hallo,

Ich habe folgenden Code gelesen, in denen mag ich Überspringe die erste Zeile in CSV, die Spaltenüberschriften enthält, und lese bis zu fünf Zeilen der CSV-Datei.

Der aktuelle Code überspringt die erste Zeile, zeigt aber alle Datensätze an.

Wie kann ich das erreichen?

<?php 
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 
set_time_limit(0); 

define('CSV_PATH', '/var/www/Products_upload_12499/'); // specify CSV file path 

$csv_file = CSV_PATH . "skipfirstrow.csv"; // Name of your CSV file 
$csvfile = fopen($csv_file, 'r'); 

$counter = 1; 
while ($data = fgetcsv($csvfile)) 
{ 
    if($counter==1) { 
      $counter++; 
      continue; 
      }  } 
    $days = trim($data[0]); 
    echo "==>> " . $days."\n"; 
     if ($counter >= 6) { 
     exit(); 
    } 

} 

?> 
+0

Verwenden [PHPExcel] (https://github.com/PHPOffice/PHPExcel) Bibliothek – narasimharaosp

+0

ich auf Ubuntu arbeiten so dont Ich denke, so funktioniert Excel in Ubuntu. Deshalb verwende ich csv-Dateien – Nikita

+0

Sie wollten Zeilen 2,3,4,5 richtig? – Webeng

Antwort

1

Sie können eine if else bedingte schaffen, dass nur die Zeilen ausgibt, die Sie wollen, und dass bricht die while Schleife, wenn Sie alle Zeilen bekam man wollte:

$row = 0; 
while ($data = fgetcsv($csvfile)) 
{ 
    $row++;//starts off with $row = 1 
    if (($row>1)&&($row<6))//rows 2,3,4,5 
    { 
     foreach ($data as $cell) 
     { 
      echo "| {$cell} |"; 
     } 
     echo "<br>"; 
    } 
    else if ($row>=6) 
    { 
     break; 
    } 
} 

können Sie ersetzen die echo "| {$cell} |"; Code mit was auch immer Sie mögen, um den Code auszugeben.

Lassen Sie mich wissen, ob dies für Sie funktioniert.

0

nur erste Zeile überspringen, indem Sie nicht gleich assign !=, lassen Sie mich wissen, dass es

wird arbeiten
$counter = 1; 
while ($data = fgetcsv($csvfile)) 
{ 
    if($counter !=1) { 
     $days = trim($data[0]); 
     echo "==>> " . $days."\n"; 
     if($counter >= 6) 
     break; 
    } 
    $counter++; 
} 
+1

oh ja Danke @vp_art –

+0

Schöner Fang, @Nikita :) Aber unausgeglichen '{}' hier jetzt. –

+0

Nein, es ist nicht unausgeglichen .. Alle '{}' sind richtig geschlossen – Nikita

0

Noch ein anderer Code, dies zu erreichen.
fgets verwendet, um Zeilen zu überspringen, um übermäßige CSV-Parsing zu vermeiden.

if (($f = fopen('test.csv', 'r')) === false) 
    throw new Exception('File not found'); 

$skip = 1; 
$length = 5; 

for ($i = 1; $i < $skip; $i++) fgets($f); // skip first $skip lines 
for ($i = $skip; $i < $skip + $length; $i++) { 
    $row = fgetcsv($f); 
    echo implode(', ', $row)."<br/>\n"; 
}