原生PHP导出excel文件

一直以为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;
?>

  

需要注意的问题

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.jianshu.com/p/b2cac965d306

posted @ 2022-10-11 16:14  星云惊蛰  阅读(376)  评论(0)    收藏  举报