打开PHP创建的CSV文件

时间:2017-01-30 10:58:29

标签: php excel csv

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

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

当我按照Microsoft文档中的说明检查Language and Regional Settings时,分隔符也是&#34 ;;"。

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

2 个答案:

答案 0 :(得分:2)

这个标题可以正确显示csv格式。

class Bot {
    constructor(parameter) {
       this.parameter = parameter;
    }

    doSomething() {
        alert(this.parameter.foo);
    }
}

let instance = new Bot({foo: 'bar'});

instance.doSomething(); // Will fire an alert containing the contents of {foo}

您可以使用此标题

答案 1 :(得分:1)

以下方法似乎对我有用。 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(...)的第三个参数来设置分隔符。