我正在尝试从PHP导出数据以生成CSV文件。但是,当我将其导入Excel时,它看起来像这样:
这是我的php代码:
<?php
if($error == '')
{
$file_open = fopen("Sortering_formulier.csv", "a");
$rows = count(file("Sortering_formulier.csv"));
if($rows > 1)
{
$rows = ($rows - 1) + 1;
}
$form_data = array(
'sr_no' => $rows,
'auditeurso' => $auditeurso,
'datum' => $datum,
'zone' => $zone,
'textso01' => $textso01,
'ok' => $ok,
'results' => $results,
'okk' => $okk,
'okc' => $okc,
'comment' => $comment
);
fputcsv($file_open, $form_data);
$error = '<label class="text-success">Thank you for filling in the Sorting form</label>';
$auditeurso = '';
$datum = '';
$zone = '';
$textso01 = '';
$ok = '';
$results = '';
$okk = '';
$okc = '';
$comment = '';
}
}
?>
答案 0 :(得分:0)
首先,您需要了解CSV文件的工作方式。 CHS文件只是一个文本文件,每行都有逗号分隔的值。当您尝试将CSV文件导入Excel /电子表格时。他们将每一行读为一行,并将每个逗号分隔的值排列为每一行的列。现在,您在代码中所做的就是以错误的方式将数组传递给putcsv()
方法。看一下您要传递的数组,
$form_data = array(
'sr_no' => $rows,
'auditeurso' => $auditeurso,
'datum' => $datum,
'zone' => $zone,
'textso01' => $textso01,
'ok' => $ok,
'results' => $results,
'okk' => $okk,
'okc' => $okc,
'comment' => $comment
);
在代码中,您要将关联数组传递给putcsv()
函数,而您需要将多维数组传递给该函数。在数组中,您要传递的每个元素都被视为每一列的单个值,这就是您在Excel中获取混乱文本的原因。您可以尝试以这种格式传递数组,
$form_data = array(
['sr_no', 'auditeurso', 'datum', 'zone', 'textso01', 'ok', 'results', 'okk', 'okc', 'comment'], /* this represent the column headers in the Excel*/
[$rows, $auditeurso, $datum, $zone, $textso01, $ok, $results, $okk, $okc, $comment]
);