[RESOLU] Séparateurs dans un export .csv

Eléphanteau du PHP | 10 Messages

21 févr. 2019, 14:28

Bonjour,

J'ai mis en place un script de récupération de données en csv... tout fonctionne parfaitement bien à l'exception du choix du séparateur que je ne parviens pas à changer.

J'aimerais avoir des ; au lieu des , afin qu'à l'ouverture les colonnes soient directement bien identifiées.

Merci déjà pour votre aide !

//Fetch all depuis ma table.
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
 
//Récupération des colonnes.
$columnNames = array();
if(!empty($rows)){
    //We only need to loop through the first row of our result
    //in order to collate the column names.
    $firstRow = $rows[0];
    foreach($firstRow as $colName => $val){
        $columnNames[] = $colName;
    }
}
 
//Nom du fichier.
$fileName = "$dev.csv";
 
//Forcing du téléchargeemnt.
header('Content-Type: application/excel');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
 
//Ouverture
$fp = fopen('php://output', 'w');
 
//Ajout des titres de colonnes.
fputcsv($fp, $columnNames);
 
 
//Boucle de création du fichier CSV.
foreach ($rows as $row) {
    fputcsv($fp, $row);
}
 
//fermeture
fclose($fp);


Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 févr. 2019, 15:04

Bonjour,

Un petit tour par la doc de la fonction fputcsv() devrait t'aider ;-)
http://php.net/fputcsv
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 10 Messages

21 févr. 2019, 17:51

Après re-lecture approfondie du manuel, ça a enfin fait "tilt"
Je n'utilisais pas la bonne notation ! Grrr...
Effectivement, après toutes les tentatives, revenir au manuel est souvent salvateur !
Merci !

Je mets la solution, ça peut servir, c'est rageant de chercher sans trouver un exemple pour tester.
//Ajout des titres de colonnes.
fputcsv($fp, $columnNames, ";");
 
//Boucle de création du fichier CSV.
foreach ($rows as $row) {
    fputcsv($fp, $row, ";");
}