transformé un CSV en tableau php

Petit nouveau ! | 7 Messages

05 janv. 2007, 13:47

voilà bonjour

je cherche à savoir comment on peut transformer un fichier CSV en tableau PHP

mon CSV est du style :

Code : Tout sélectionner

Period end;Duration;Sample;Corner;Line;Nb de Create PDP Roaming In;Nb de Create PDP Roaming In Fail;Ratio Create PDP Roaming In Fail;Nb de Crea PDP Roaming IN GTP V0;Nb T-PDU Roaming In;Nb T-PDU Roaming In UL;Nb T-PDU Roaming In DL;Ratio T-PDU Roaming In UL/DL;Length Roaming In T-PDU;Length T-PDU Roaming In UL;Length T-PDU Roaming In DL;Nb Creat PDP Imsi Non Identifiés;Nb de T-PDU Imsi Non Identifiés;Length T-PDU Imsi Non Identifiés;DR Status;DR Status Nok;Ratio DR Status Nok;DR Status CP;DR Status CP Nok;Ratio DR Status CP Nok 13/11/2006 00:00;900;1;-;all;684;224;32,74;44;202141;91734;110407;83,08;76013478;16343861;59669617;137;890419;287195441;1093381;347;0,03;821;347;42,26 13/11/2006 00:00;900;1;-;Bez3GgsnNok01;0;0;0;0;0;0;0;0;0;0;0;13;168946;47574160;168959;13;0;13;13;100
la première ligne contient les entete des différentes colonne du tableau
les suivantes contiennent les données.

j'aurai voulu éventuellement pouvoir visualiser ce tableau php pour vérifier qu'il est juste. (avec EasyPHP)

ViPHP
ViPHP | 2144 Messages

05 janv. 2007, 13:54

Regardes du côté des fonctions qui permettent d'accéder aux fichiers.
Tu peux lire ton fichier ligne par ligne.
Pour chaque ligne tu fais un explode(), qui va te mettre les différentes valeurs de la ligne dans un tableau.
Ensuite un simple parcours du tableau, pour afficher chaque case.
Modifié en dernier par iclo le 05 janv. 2007, 13:56, modifié 1 fois.

Petit nouveau ! | 7 Messages

05 janv. 2007, 13:55

j'avais trouvé ce script :

Code : Tout sélectionner

$fichier = "questionnaire3.csv"; $fic = fopen($fichier, 'rb'); echo "<table border='1'>\n"; for ($ligne = fgetcsv($fic, 1024); !feof($fic); $ligne = fgetcsv($fic, 1024)) { echo "<tr>"; $j = sizeof($ligne); for ($i = 0; $i < $j; $i++) { echo "<td>$ligne[$i]</td>"; } echo "</tr>"; } echo "</table>\n";
mais ça me renvoie ça comme erreur :

Warning: fopen(essai.csv): failed to open stream: Invalid argument in ...\essai.php on line 3

Warning: fgetcsv(): supplied argument is not a valid stream resource in ...\essai.php on line 6

ViPHP
ViPHP | 2144 Messages

05 janv. 2007, 13:58

Je ne connaissais pas fgetcsv() mais en effet, ça devrait faire l'affaire.

Petit nouveau ! | 7 Messages

05 janv. 2007, 16:57

<?php
	/*Script name : Convertir
	* Description : Lit un fichier CSV file et retrourne un fichier TSV. Le fichier CSV doit avoir une extension CSV */
	
	$monfichier = "C:\...\test.csv";
	function convert ($nomfichier)
	{
		if(@$fh_in = fopen("{$nomfichier}.csv","r"))
		{
		$fh_out = fopen("{$nomfichier}.tsv","a");
		while (!feof(($fh_in))
			{
			$ligne = fgetcsv ($fh_in,1024);
			if($ligne[0] == "")
				{
				fwrite($fh_out,"\n");
				}
			else {
				fwrite($fh_out,implode($ligne,"\t),"\n);
				 }
			}
			fclose($fh_in);
			fclose($fh_out);
		}
		else {
			echo "Ce fichier n'exite pas\n";
			return TRUE;
			 }
		convert ($monfichier);
	}
?>
j'ai trouvé ça à voir

Petit nouveau ! | 7 Messages

05 janv. 2007, 19:45

pour ceux que ça intéresse :

Code : Tout sélectionner

<?php ### Conversion du CSV en tableau PHP ### var_dump(parse_csv_file('C:\graphes.csv', true, ';')); /* selection du fichier */ function parse_csv_file($file, $columnheadings = false, $delimiter = ',', $enclosure = "\"") { $row = 1; $rows = array(); $handle = fopen($file, 'r'); while (($data = fgetcsv($handle, 1000, $delimiter, $enclosure )) !== FALSE) { if (!($columnheadings == false) && ($row == 1)) { $headingTexts = $data; } elseif (!($columnheadings == false)) { foreach ($data as $key => $value) { unset($data[$key]); $data[$headingTexts[$key]] = $value; } $rows[] = $data; } else { $rows[] = $data; } $row++; } fclose($handle); return $rows; } var_dump('<pre>', $data, '</pre>'); /* Affichage du tableau pour vérification */

et la dernière ligne en var_dump à commenter ou non suivant si on veut afficher le CSV pour vérification