CSV Import mit PHP

Des öfteren hat man aus einem Export aus, anderen Systemen CSV-Dateien die wieder in ein Projekt importiert werden sollen. Ein Import einer CSV-Datei kann in PHP sehr leicht geschrieben werden. Im folgenden werde ich den Import einer CSV-Datei kurz und knackig erklären.

Als Beispiel besitzen wir eine CSV Datei mit 3 Spalten und mehreren Zeilen. Die erste Zeile ist die Headerzeile und gibt die Spaltenbeschriftung an.

Hier der dazu notwendige Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Datei öffnen
$dateihandle = fopen('dateipfad/dateiname.csv', 'r+');
// Prüfen ob $dateihandle auch ein wirklicher Dateizeiger ist
if(!is_resource($dateihandle){
die("Datei konnte nicht geöffnet werden");
}
// Wenn eine Headerzeile existiert lesen wir diese als erstes aus:
$headline = explode(';', fgets($dateihandle));
// Nun durchlaufen wir die gesamte datei in einer Schleife.
while($zeile = fgets($dateihandle)){
$zeileninhalt = explode(';', $zeile);
// Hier können wir mittels $zeileninhalt['Spaltennummer'] auf die Inhalte zugreifen
// Bitte beachten dass die Zählung der Spaltennummer bei 0 anfängt
}
// Zum Schluss noch die Datei ordnungsgemäß schließen
fclose($dateihandle);

Was passiert hier nun im Detail? Es ist relativ simpel. Mit fopen() öffnen wir die Datei und erstellen einen Dateizeiger.
Im nächsten Schritt prüfen wir mit is_resource() ob bei dem öffnen der Datei auch wirklich nichts schief gelaufen ist und $dateihandle eine echte Resource für weitere Handlungen ist.
Die Zeile mit $headline wird natürlich nur benötigt, wenn auch eine Headline in der CSV vorhanden ist. Sollte in der CSV keine Headline vorhanden sein, diese Zeile aber dennoch an gegeben sein, dann wird der erste Datensatz ignoriert. Mit explode() erstellen wir aus der Zeile der CSV ein Array auf das wir hinterher bequem via Array-Index zugreifen können. Die while Schleife wird so lange ausgeführt bis fgets() einen Fehler zurückliefert. Dies ist der Fall wenn das Ende der CSV Datei erreicht wurde und fgets() nicht mehr weiter die Datei auslesen kann. Am Ende schließen wir die Datei wieder ordnungsgemäß.

Nun haben wir einen sehr einfachen CSV Import geschrieben.

One Response to CSV Import mit PHP

  1. Manuel M. sagt:

    Super, ich habs verstanden. Sehr gut Erklärt. Eventuell schaffe ich es zeile 35, die spalte 1 auszulesen.

    Hoffentlich ist das die lössung für RGraph LIVE Grafiken..

    Danke

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *