0

这是如何将 php 数据导出到 csv 的短代码

$filename ="excelreport.csv";
$contents = "русский \t testdata2 \t testdata3 \t \n latviešu valoda \t 43.45 \t testdata3 \t \n";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $contents);

这是将数组导出到 csv 的短代码

$data=array(
array("firstname" => "русский", "lastname" => "Johnson", "age" => 25),
array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18),
);

$filename = "website_data_" . date('Ymd') . ".csv";

header('Content-type: application/csv');
header("Content-Disposition: attachment; filename=\"$filename\"");

$out = fopen("php://output", 'w');

foreach($data as $row) {
fputcsv($out, array_values($row), ',', '"');
}
fclose($out);
exit;

在第一个代码中,有一个带有俄语字符的字符串,并且 withchr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $contents)可以处理该字符串,因此俄语字符可以русский正确显示在 csv 中。

以同样的方式尝试对数组进行操作。

添加$data = (chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $data));在输出中获取空白 csv 文件。

假设,好的,不适用于数组,但如第一个示例中所示,必须使用字符串。所以将代码更改为此

foreach($data as $row) {
fputcsv($out, array_values((chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $row))), ',', '"');
}

但也会得到空白的 csv 文件。任何想法如何获得正确的 csv 文件(将数组导出到 csv 并正确显示俄语字符)?

4

0 回答 0