所有csv导出数据都在一列中


all csv export data is in one column

我有csv导出的代码,我正在使用它,但问题是所有数据都在csv上导出到一列中。但我需要数据必须以列分隔,

 
 <?php
 $results= array(0=>array(name => "anil",agency=>"",phone=>"234235",cname=>"Atleta"),1=>array(name => "anil",agency=>"",phone=>"234235",cname=>"Atleta"));
 $column = array("name","cname","agency","phone");
		$writecolumn = array("Nome do Artista","Categoria","Agencia","Telefone");
		$csv_export='';
		for($i = 0; $i < count($column); $i++)
		{
		    $csv_export.= $writecolumn[$i]."'t" ;
		}
		$csv_export.= "'n";
		for($j = 0; $j < count($results); $j++)
		{
		    for($i = 0; $i < count($column); $i++)
		    {
			$csv_export.= $results[$j][$column[$i]]."'t"; 
		    } 
		    $csv_export.= "'n";
		}		
	  
	    $categoryname=$results[0]['cname'];
	    $filename = $categoryname."-Category-Artist-Data.csv";
	    header('Content-type: application/csv');
	    header('Content-Disposition: attachment; filename='.$filename);
	    echo $csv_export;
	    exit;        
    ?>

使用array_reduce,通过将函数应用于每个元素,将初始值作为第三个参数传递,将数组简化为单个值,类似于:

$result= array(0=>array(name => "anil",agency=>"",phone=>"234235",cname=>"Atleta"),1=>array(name => "name_anil",agency=>"agency2",phone=>"234235",cname=>"Atleta_2"));
$csv_export = array_reduce($result, function($acc,$row) {
    foreach($row as $key => $value) {
        $acc .= $value;
        $acc .= "'t";
        }
    $acc .= "'n";
    return $acc;
    },
    "Nome do Artista'tCategoria'tAgencia'tTelefone'n")
$categoryname=$results[0]['cname'];
$filename = $categoryname."-Category-Artist-Data.csv";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo $csv_export;
exit;

您的代码具有分隔符(值分隔符)为'tab'('''t')。可能是您的CSV读取软件需要一些配置才能开始使用"tab"("''t''t")作为分隔符。我在下面更新了您的代码,并使用","作为分隔符。Microsoft Excel使用","作为默认分隔符。请尝试下面的代码,

 
 <?php
                $results= array(0=>array('name' => "anil",'agency'=>"",'phone' =>"234235",'cname'=>"Atleta"),1=>array('name' => "anil",'agency'=>"",'phone'=>"234235",'cname'=>"Atleta"));
                $column = array("name","cname","agency","phone");
		$writecolumn = array("Nome do Artista","Categoria","Agencia","Telefone");
		$csv_export='';
		for($i = 0; $i < count($column); $i++)
		{
		    $csv_export.= $writecolumn[$i]."," ;
		}
		$csv_export.= "'r'n";
		for($j = 0; $j < count($results); $j++)
		{
		    for($i = 0; $i < count($column); $i++)
		    {
			$csv_export.= $results[$j][$column[$i]].","; 
		    } 
		    $csv_export.= "'r'n";
		}		
	  
	    $categoryname=$results[0]['cname'];
	    $filename = $categoryname."-Category-Artist-Data.csv";
	    header('Content-type: application/csv');
	    header('Content-Disposition: attachment; filename='.$filename);
	    echo $csv_export;
	    exit;        
    ?>