直接从阵列输出到CSV而不保存为CSV文件

时间:2012-05-15 18:27:54

标签: php arrays file csv

我正在寻找一种简单的方法来获取数组,将其转换为CSV并让用户能够下载CSV,而无需将CSV保存到服务器。

2 个答案:

答案 0 :(得分:7)

header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=test.csv");
$fp = fopen('php://output', 'w');
foreach ($array as $row) {
    fputcsv($fp, $row);
}

请参阅fputcsv()

使用fputcsv的好处是它将为您处理字段的转义和封闭,确保有效,坚固的输出。不幸的是,它无法输出到字符串,所以我写入php的输出流。你也可以写'php:// memory',如果你需要在输出之前访问它,那么你可以像文件一样读它。

关于包装http://www.php.net/manual/en/wrappers.php.php

信息

答案 1 :(得分:4)

header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=test.csv");
header("Pragma: no-cache");
header("Expires: 0");

echo "name,city,street\n";

有时最好使用

header("Content-Type: application/octet-stream");

for IE ...