繁体   English   中英

打开PHP创建的CSV文件

[英]Opening a CSV file created by PHP

我在PHP中使用fputcsv创建一个CSV文件。 文件创建成功,我可以在MacOS中打开文件没有问题。 (我在MacOS中使用Numbers)。 问题出在Microsoft Excel中,它将所有行显示为合并的单个列。

我将分隔符设置为“;” 在代码中。

当我在Microsoft文档中检查语言和区域设置时 ,分隔符也是“;”。

我还应该检查什么? 谢谢。

那么这个标题将允许csv格式正确显示。

 header('Content-Encoding: UTF-8');
    header('Content-type: text/csv; charset=UTF-8');
    header('Content-Disposition: attachment; filename=filename.csv');
    echo "\xEF\xBB\xBF";

您可以使用此标头

以下方法似乎对我有用。 Microsoft Excel完美地打开它。

$filePath = '/home/user/';
$filename = 'test.csv';

$df = fopen($filePath.$filename, 'w');
fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF));
fputcsv($df, $dataColumns);
foreach ($dataArray as $dataRow) {
    fputcsv($df, $dataRow);
}
fclose($df);

// Output csv
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.$filename);
header("Cache-Control: no-store, no-cache");
readfile($filePath.$filename);

笔记

  • fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF)); 写文件头以获得正确的编码。
  • 您可以使用fputcsv(...)的第三个参数来设置分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM