一直以为PHP导出excel需要用PhpSpreadsheet或者PHPExcel这类插件,但其实原生PHP也可以导出excel,而且非常简单。
<?php
header("Content-type:application/vnd.ms-excel",charset=UTF8-Bom);
header("Content-Disposition:attachment;filename=test.xls");//test.xls为文件名字
$tab="\t";
$br="\n";
$head="编号".$tab."备注".$br;
//输出内容如下:
echo $head.$br;
echo "test321318312".$tab;
echo "string1";
echo $br;
echo "330181199006061234".$tab; //直接输出会被Excel识别为数字类型
echo "number";
echo $br;
?>
上面的代码会导出下面的excel
编号 | 备注 |
---|---|
test321318312 | string1 |
330181199006061234 | number |
需要注意的问题
1.长数字会自动变成科学计数法
我们输出330181199006061234这样的长数字时,excel会显示成3.30E+17这种科学计数法,但是类似身份证号码、手机号码这样的数字,需要直接显示出来。
//在excel会直接显示
echo "=\"330181199006061234\"".$tab;
echo '="'.$PhoneNumber.'"';
所以只需要在长数字前面加 =" 后面加" 就可以了
2.中文的编码问题
中文会变成一串乱码,是因为导出的excel文件默认是utf8,没有带BOM的, 微软会将其当作GBK打开,中文就会乱码。
所以我们需要在header头指定文件的编码为UTF8-Bom。
header("Content-type:application/vnd.ms-excel",charset=UTF8-Bom");
参考
https://www.zhihu.com/question/23392439
https://cloud.tencent.com/developer/article/1090648
网友评论