<?php
/**
* 导出Excel
* @param array $heads 表头 一维数组
* @param mixed $mixed 数据(二维关联数组)| 函数 如 foreach($list AS $item){return "<tr><td>{$item['id']}</td></tr>";}
* @param array $fields 字段列表 如 ['id','name'];
* @param string $excel_name 文件名
* @return null
*/
function exportExcel($heads, $mixed, $fields = [], $excel_name = 'excel')
{
header('Content-Type: text/xls');
header("Content-type:application/vnd.ms-excel;charset=utf-8");
header("Content-Disposition: attachment; filename={$excel_name}.xls");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header("Pragma: no-cache");
$str = chr(239) . chr(187) . chr(191) . '<table border="1">';
//绘制表头
if ($heads) {
$str .= '<tr>';
foreach ($heads AS $head) {
$str .= '<th>' . (string)$head . '</th>';
}
$str .= '</tr>';
}
//表格数据
if ($mixed) {
//二维关联数组
if (is_array($mixed)) {
$list = $mixed;
foreach ($list AS $item) {
$str .= '<tr>';
if ($fields) {
foreach ($fields AS $td) {
$str .= '<td>' . (isset($item[$td]) ? $item[$td] : '') . '</td>';
}
} else {
foreach ($item AS $td) {
$str .= '<td>' . $td . '</td>';
}
}
$str .= '</tr>';
}
} else {
//函数
$str .= $mixed;
}
}
$str .= '</table>';
echo $str;
die();
}
//Demo
$arr = [['username'=>'tom','age'=>18],['username'=>'john','age'=>19]];
exportExcel(['名字','年龄'],$arr,['username','age']);