PHP 导出csv格式excel

来源:互联网 发布:汽修管理系统源码 编辑:程序博客网 时间:2024/05/14 11:48

对于数据量较大的网站,用phpexcel导出时会用很长时间,可以会超时失败。所以就选用csv格式导出,提高导出速度。下面是例子。

 ini_set('memory_limit', '-1');        set_time_limit(0);        header('Content-Type: application/vnd.ms-excel');        header('Content-Disposition: attachment;filename="'.date('Y-m-d', $timeRange['firstday'])."_".date('Y-m-d', $timeRange['lastday'])."_报表".'.csv"');        header('Cache-Control: max-age=0');        $WareHouseModel=new WareHouse();        //打开PHP文件句柄,php://output 表示直接输出到浏览器        $fp = fopen('php://output', 'a');        $headlist=array('日期','仓库','经销商姓名','经销商','品牌','店名');            //输出Excel列名信息        foreach ($headlist as $key => $value) {            //CSV的Excel支持GBK编码,一定要转换,否则乱码            $headlist[$key] = iconv('utf-8', 'gbk', $value);        }        //将数据通过fputcsv写到文件句柄        fputcsv($fp, $headlist);        //计数器        $num = 0;        //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小        $limit = 100000;        //逐行取出数据,不浪费内存        $count = count($data);        for ($i = 0; $i < $count; $i++) {            $num++;            //刷新一下输出buffer,防止由于数据过多造成问题            if ($limit == $num) {                ob_flush();                flush();                $num = 0;            }            $row = $data[$i];            $j=0;            foreach ($row['content'] as $k=>$goodsId) {                unset($rows);                $rows[] = "\t" . date('Y-m-d H:i', '日期');                $rows[] = iconv('utf-8', 'gbk', '仓库');                $rows[] = iconv('utf-8', 'gbk', '经销商姓名');                $rows[] = iconv('utf-8', 'gbk', '经销商');                $rows[] = iconv('utf-8', 'gbk', '品牌');                $rows[] = iconv('utf-8', 'gbk', '店名');                fputcsv($fp, $rows);            }        }



原创粉丝点击