使用PHP fputcsv函数导出CSV文件的正确方法

使用PHP fputcsv函数导出CSV文件的正确方法,php,excel,csv,fputcsv,Php,Excel,Csv,Fputcsv,我想做的是,导出一些用于Excel的数据集,而不使用额外的、第三方的、繁重的库 问题是,当我导出文件时,第一行看起来不错,但从第二行开始,它将所有$row数据放入当前行的第一个字段 所以,我得到的文件中,第一行正确地放在右边的列中,从第二行开始,而不是从列开始,我在第一个字段中看到了用分隔符(逗号)分隔的整个文本 下面是我用于生成结果的代码片段 $counter=0; $file = fopen("sample.csv", "w"); forea

我想做的是,导出一些用于Excel的数据集,而不使用额外的、第三方的、繁重的库

问题是,当我导出文件时,第一行看起来不错,但从第二行开始,它将所有
$row
数据放入当前行的第一个字段

所以,我得到的文件中,第一行正确地放在右边的列中,从第二行开始,而不是从列开始,我在第一个字段中看到了用分隔符(逗号)分隔的整个文本

下面是我用于生成结果的代码片段

        $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);
也试图

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

没有成功。我做错了什么?无论操作系统或Excel语言环境等如何,在所有Excel版本上查看正确结果的正确方法是什么

检查您的导出文件。第一行和下一行之间有区别吗?F.I.第一行文本用引号括起来,其他行没有。也许您也可以将导出文件中的前两行添加为问题的输出示例。我知道Excel对于csv文件有自己的想法。代码看起来不错,所以用简单文本编辑器(记事本)打开文件,看看内容如何。Excel是否设置为使用换行符作为行分隔符?顺便说一句,没有合适的方法来处理区域设置。Excel始终使用用户为csv文件定义的分隔符。看起来您需要:
fputcsv($file,array_values($row))而不是
fputcsv($file,$row)检查导出文件。第一行和下一行之间有区别吗?F.I.第一行文本用引号括起来,其他行没有。也许您也可以将导出文件中的前两行添加为问题的输出示例。我知道Excel对于csv文件有自己的想法。代码看起来不错,所以用简单文本编辑器(记事本)打开文件,看看内容如何。Excel是否设置为使用换行符作为行分隔符?顺便说一句,没有合适的方法来处理区域设置。Excel始终使用用户为csv文件定义的分隔符。看起来您需要:
fputcsv($file,array_values($row))而不是
fputcsv($file,$row)检查导出文件。第一行和下一行之间有区别吗?F.I.第一行文本用引号括起来,其他行没有。也许您也可以将导出文件中的前两行添加为问题的输出示例。我知道Excel对于csv文件有自己的想法。代码看起来不错,所以用简单文本编辑器(记事本)打开文件,看看内容如何。Excel是否设置为使用换行符作为行分隔符?顺便说一句,没有合适的方法来处理区域设置。Excel始终使用用户为csv文件定义的分隔符。看起来您需要:
fputcsv($file,array_values($row))而不是
fputcsv($file,$row)