打开PHP创build的CSV文件

我使用PHP中的fputcsv创build一个CSV文件。 文件创build成功,我可以在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(...)的第三个参数来设置分隔符。