【发布时间】:2017-05-06 17:33:45
【问题描述】:
我目前正在创建和输出 CSV,如下所示:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=file.csv');
header("Cache-Control: no-store, no-cache");
$df = fopen('php://output', 'w');
fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF));
foreach ($csvLines as $csvLine) {
fputcsv($df, $csvLine);
}
exit;
但是,我不仅要输出,还要将此文件保存到磁盘。如何将$df 写入文件?
注意欢迎提出改进我生成 CSV 的建议 :)
【问题讨论】:
-
$df = fopen('/path/to/where/you/want/the/file/on/disk.csv', 'w');而不是打开php://output;然后在exit之前使用readfile('/path/to/where/you/want/the/file/on/disk.csv')也将其发送到浏览器 -
不要编写 UTF-8 BOM。它是not needed,很多时候它弊大于利。
-
@axiac 不幸的是,当尝试使 Excel 与 CSV 一起工作时,这种智慧并不成立(这是一种非常常见的情况)。 (尽管不幸的是,用 CSV 正确支持 Excel 更加复杂……)
-
@MarkBaker 你能把你的评论放在答案中吗?它对我的帮助最大。
标签: php csv file-handling