PHP导出数据到CSV文件函数/方法
如果不清楚什么是CSV文件,可看如下文章介绍 CSV格式的是什么文件?CSV是什么的缩写?
/** * 导出数据到CSV文件 * @param array $data 数据 * @param array $title_arr 标题 * @param string $file_name CSV文件名 */ function export_csv(&$data, $title_arr, $file_name = '') { ini_set("max_execution_time", "3600"); $csv_data = ''; /** 标题 */ $nums = count($title_arr); for ($i = 0; $i < $nums - 1; ++$i) { $csv_data .= '"' . $title_arr[$i] . '",'; } if ($nums > 0) { $csv_data .= '"' . $title_arr[$nums - 1] . "" "; } foreach ($data as $k => $row) { for ($i = 0; $i < $nums - 1; ++$i) { $row[$i] = str_replace(""", """", $row[$i]); $csv_data .= '"' . $row[$i] . '",'; } $csv_data .= '"' . $row[$nums - 1] . "" "; unset($data[$k]); } $csv_data = mb_convert_encoding($csv_data, "cp936", "UTF-8"); $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name; if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { // 解决IE浏览器输出中文名乱码的bug $file_name = urlencode($file_name); $file_name = str_replace('+', '%20', $file_name); } $file_name = $file_name . '.csv'; header("Content-type:text/csv;"); header("Content-Disposition:attachment;filename=" . $file_name); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); echo $csv_data; }
应用举例:
$header = array( '0' => '参数ID', '1' => '参数名称', '2' => '统计次数', '3' => '统计次数百分比', '4' => '唯一用户数', '5' => '唯一用户数百分比', '6' => '人均次数' ); /** 列表项 */ foreach ($list as $key => $row){ $csvList[] = array( '0' => $row['param_key'], '1' => $row['param_name'], '2' => $row['nums'], '3' => $row['percent_nums'] . '%', '4' => $row['total_users'], '5' => $row['percent_total_users'] .'%', '6' => $row['avg'] ); } /** 导出csv */ $title = str_replace(' ','-', $title); export_csv($csvList, $header, $title);