900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php 导出excel大量数据方法

php 导出excel大量数据方法

时间:2023-08-14 06:28:00

相关推荐

php 导出excel大量数据方法

由于数据较大,常用的PHPexcel包需要把所有数据拿到后才能生成excel, 在面对生成超大数据量的excel文件时这显然是会造成内存溢出的,所以考虑使用让PHP边写入输出流边让浏览器下载的形式来完成需求。

通过PHP输出流方式导出

php://output是一个可写的输出流,允许程序像操作文件一样将输出写入到输出流中,PHP会把输出流中的内容发送给web服务器并返回给发起请求的浏览器 保存为csv文件

CSV是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中,而XLS则是EXCEL专用格式了。CSV文件一行即为数据表的一行,生成数据表字段用半角逗号隔开。

<?phpheader('Access-Control-Allow-Origin:*');//允许所有来源访问$headArr=array("AAA","BBB","CCC"); //模拟表头数据数组$data=array(array("1","2","3"),array("11","22","33"),array("111","222","333")); //模拟表格数据exportToExcel("ceshi", $headArr, $data); //导出数据/**导出api**/function exportToExcel($fileName = '', $headArr = [], $data = []){ini_set('memory_limit','1024M'); //设置程序运行的内存ini_set('max_execution_time',0); //设置程序的执行时间,0为无上限ob_end_clean(); //清除内存ob_start();header("Content-Type: text/csv");header("Content-Disposition:filename=".$fileName.'.csv');$fp=fopen('php://output','w');fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));fputcsv($fp,$headArr);$index = 0;foreach ($data as $item) {if($index==1000){//每次写入1000条数据清除内存$index=0;ob_flush();//清除内存flush();}$index++;fputcsv($fp,$item);}ob_flush();flush();ob_end_clean();exit();}?>

用浏览器访问该php文件请求下载:

下载打开查看:

逐步写入输出流然后发送到浏览器让浏览器去逐步下载整个文件,由于是逐步写入的无法获取文件的总体size所以就没办法通过设置header(“Content-Length: $size”);在下载前告诉浏览器这个文件有多大了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。