原生PHP 导出CSV格式文件
public function exportCSV(){
//示例数组数据
$new_arr = array(
array(
'gw_name' => '123',
'zw_name' => '345',
'score' => '67.6',
),
array(
'gw_name' => 'ABC',
'zw_name' => '345',
'score' => '67.6',
),
array(
'gw_name' => 'DEF',
'zw_name' => '345',
'score' => '67.6',
),
array(
'gw_name' => 'EFG',
'zw_name' => '345',
'score' => '67.6',
),
);
//处理遍历数据格式放入新的数组$res
foreach($new_arr as $k => $v){
$res['allList'][$k] = array(
'gw_name' => $v['gw_name'],
'zw_name' => $v['zw_name'],
'score' => $v['score'],
);
}
//定义表头 (表头要和上面的$res['allList']数据相对应)
$res['title'] = array(
'gw_name' => '岗位名称',
'zw_name' => '职位名称',
'score' => '分数',
);
$headerList = array(); //定义表头
$machineData = array(); //定义数据
//处理表头放入新的数组中
foreach ($res['title'] as $k => $v){
$headerList[] = $v;
}
//处理数据放入新的数组中
foreach ($res['allList'] as $k => $v){
foreach ($v as $key => $val){
$machineData[$k][] = $val;
}
}
$result = array();
// 打开文件资源,不存在则创建
$time = time();
$fileName = date('Ym',time()).$time;
//导出文件地址 ./表示当前服务器地址
$des_file = './Uploads/CSV/'.$fileName.'_export.csv';
$fp = fopen($des_file,'a');
// 处理头部标题
$header = implode(',', $headerList) . PHP_EOL;
// 处理内容
$content = '';
foreach ($machineData as $k => $v) {
$content .= implode(',', $v) . PHP_EOL;
}
// 拼接
$csv = $header.$content;
// 写入并关闭资源
fwrite($fp, $csv);
fclose($fp);
//把文件输出到下载
// $file = fopen($des_file,"r"); // 打开文件
// $size=filesize($des_file);
// Header("Content-type: application/octet-stream");
// Header("Accept-Ranges: bytes");
// Header("Accept-Length: ".$size);
// Header("Content-Disposition: attachment; filename=download.csv");
// echo fread($file,$size);
// fclose($file);
$result['status'] = 200;
$result['msg'] = '成功';
//打印csv文件的地址
$result['url'] = 'https://************/Uploads/CSV/'.$fileName.'_export.csv';
$this->ajaxReturn($result,'JSON');
}
亲测有效~ 如有不好用的下方评论改正