Un bon moyen d'utiliser PHP fputcsv function pour exporter le file CSV

Ce que je veux faire, c'est exporter un jeu de données pour Excel sans utiliser de bibliothèques extra, tierces et lourdes.

Le problème est que lorsque j'exporte le file, la première ligne semble bien, mais à partir de la deuxième ligne, elle met toutes datatables $row dans le premier champ de la ligne actuelle.

Je reçois donc un file avec la première rangée correctement placé dans les colonnes de droite et à partir de la deuxième ligne au lieu des colonnes, je vois tout le text dans le premier champ séparé par le délimiteur (virgule)

entrez la description de l'image ici

Voici l'extrait de code que j'utilise pour le résultat.

  $counter=0; $file = fopen("sample.csv", "w"); foreach ($registrants as $registrant) { $row = [ 'Fullname' => $registrant->fullname, 'Phone' => $registrant->phone, 'Email' => $registrant->email, ]; if ($counter == 0) fputcsv($file, array_keys($row)); fputcsv($file, $row); $counter++; } fclose($file); ];  $counter=0; $file = fopen("sample.csv", "w"); foreach ($registrants as $registrant) { $row = [ 'Fullname' => $registrant->fullname, 'Phone' => $registrant->phone, 'Email' => $registrant->email, ]; if ($counter == 0) fputcsv($file, array_keys($row)); fputcsv($file, $row); $counter++; } fclose($file); 

A également essayé de

  fputcsv($file, array_values($row), ';', ' '); 

Sans succès. Qu'est-ce que je fais mal? Quelle est la manière appropriée de voir les résultats corrects sur toutes les versions Excel indépendamment de l'OS ou des parameters régionaux Excel et etc.?