Import fichier cvs après export

Résolu
thiax Messages postés 2 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 13 novembre 2008 - 13 nov. 2008 à 12:53
thiax Messages postés 2 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 13 novembre 2008 - 13 nov. 2008 à 16:47
Bonjour,

Je créé un fichier csv a l'aide d'une fontion (je l'avoue, récupéré sur php.net) :
function fputcsv($handle, $row, $fd=';', $quot='"') {
    $str='';
    foreach ($row as $cell) {
        $cell = str_replace($quot, $quot.$quot, $cell);
       
        if (strchr($cell, $fd) !== FALSE || strchr($cell, $quot) !== FALSE || strchr($cell, "\n") !== FALSE) {
            $str .= $quot.$cell.$quot.$fd;
        } else {
            $str .= $cell.$fd;
        }
    }
   
    fputs($handle, substr($str, 0, -1)."\r");
   
    return strlen($str);
}

$exportCsv = fopen("monfichier.csv", 'w');
$array = array('donnée dans colonne 1', 'donnée dans colonne 2');
fputcsv($exportCsv, $array);
fclose($exportCsv);

Lorsque ce fichier est créé je souhaite afficher son contenu a l'aide d'un script :
$import = fopen("./monfichier.csv", "r");
while (($data = fgetcsv($import, 10000, ";", '"')) !== FALSE) {
    echo $data[0].' - '.$data[1].'
';
}
fclose($import);

Il ne m'affiche rien mais si j'ouvre mon fichier csv avec excel (qui contient bien mes données enregistrée lors de l'export) et que je l'"enregistre sous", même sans rien modifier dedans, l'affichage se remet à marcher.

Quelqu'un aurait il déjà rencontré ce type de problème car une petite idée serait la bienvenue ?

Merci d'avance

1 réponse

thiax Messages postés 2 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 13 novembre 2008
13 nov. 2008 à 16:47
C'est le délimiteur de fin lors de l'export qui n'était pas bon. il faut remplacer \r par \r\n.

function fputcsv($handle, $row, $fd=';', $quot='"') {
    $str='';
    foreach ($row as $cell) {
        $cell = str_replace($quot, $quot.$quot, $cell);
       
        if (strchr($cell, $fd) !== FALSE || strchr($cell, $quot) !== FALSE || strchr($cell, "\n") !== FALSE) {
            $str .= $quot.$cell.$quot.$fd;
        } else {
            $str .= $cell.$fd;
        }
    }
   
    fputs($handle, substr($str, 0, -1)."\r\n");
   
    return strlen($str);
}
3
Rejoignez-nous