我正在尝试将 php/mysql 生成的表转换为可下载的 csv 文件。当用户输入搜索参数时,将调用 mysql 表并将结果作为表返回。
我使用了该线程中提供的解决方案,效果非常好:在 PHP 中为用户创建 CSV 文件 https://stackoverflow.com/questions/217424/create-a-csv-file-for-a-user-in-php
我能够允许用户将结果保存或查看为 csv 文件。我遇到的问题是我不确定如何将列标题添加到文件中。例如,返回的结果采用以下格式:$result[x]['office']、$result[x]['user']等...,但我还想添加列标题,例如“Office”和“User”,以便任何查看 csv 文件的人立即知道数据的含义。
这是生成 csv 文件的函数:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$file.csv");
header("Pragma: no-cache");
header("Expires: 0");
outputCSV($data);
function outputCSV($data) {
$outstream = fopen("php://output", "a");
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals); // add parameters if you want
}
array_walk($data, "__outputCSV", $outstream);
fclose($outstream);
}
我尝试创建以下函数,然后在调用 outputCSV 之前调用它,但没有成功:
function create_file_header()
{
$headers = 'Office, User, Tag, Value';
$fp = fopen("php://output", "w");
file_put_contents("$file.csv", $headers);
fclose($fp);
}
任何帮助是极大的赞赏。