public static function downXls($data, $keynames, $headers, $name = 'dataxls', $convert = false, $xmlv = false)
{
$xls[] = "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\"><meta http-equiv=content-type content=\"text/html; charset=UTF-8\"><body><table border='1'>";
if ($headers) {
$xls[] = $headers;
}
$xls[] = "<tr><td>ID</td><td>" . implode("</td><td>", array_values($keynames)) . '</td></tr>';
$index = 0;
foreach ($data As $o) {
$line = [++$index];
foreach ($keynames AS $k => $v) {
$line[] = $o[$k];
}
$xls[] = '<tr><td>' . implode("</td><td x:str>", $line) . '</td></tr>';
}
$xls[] = '</table></body></html>';
$xls = join("\r\n", $xls);
if ($xmlv) {
$filename = $name . '.xlsx';
}
else {
$filename = $name . '.xls';
}
if ($convert) {
$ua = $_SERVER["HTTP_USER_AGENT"];
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20", $encoded_filename);
if (preg_match("/MSIE/", $ua)) {
header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
} else {
if (preg_match("/Firefox/", $ua)) {
header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
} else {
header('Content-Disposition: attachment; filename="' . $filename . '"');
}
}
} else {
header('Content-Disposition: attachment; filename="' . $filename . '"');
}
die(mb_convert_encoding($xls, 'UTF-8', 'UTF-8'));
}
$list=[
['id'=>2,
'name'=>'汪杨',
'address'=>'湖南'
],
['id'=>2,
'name'=>'汪杨',
'address'=>'18612345678'
]
];
$header=[
'id'=>'ID',
'name'=>'姓名',
'address'=>'地址'
];
Excel::downXls($list,$header,'aa','aa11');
