php 导出excel表格

php 导出excel

    /**
     * 导出excel(csv)
     * @data 导出数据
     * @headArr 表头,列名
     * @fileName 输出Excel文件名
     */
    public function csv_export($data = [], $headlArr = [], $fileName)
    {
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
        header('Cache-Control: max-age=0');

        //'a'写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
        //php://output 表示直接输出到浏览器
        $file = fopen('php://output', 'a');
        //输出Excel列名信息
        foreach ($headlArr as $key => $value) {
            //CSV的Excel支持GBK编码,需要进行转码
            $headlArr[$key] = iconv('utf-8', 'gbk', $value);
        }
        //excel的表格投输出
        // 将一行(用 headlArr 数组传递)格式化为 CSV 格式并写入由 file 指定的文件。
        fputcsv($file, $headlArr);
        //计算数量
        $num = 0;
        //每隔$limit行,刷新一下输出缓冲区(buffer)
        $limit = 100000;
        //逐行取出数据
        $count = count($data);
        for ($i = 0; $i < $count; $i++) {
            $num++;
            //刷新一下输出缓冲区 防止数据过多
            if ($limit == $num) {
                ob_flush(); 
                flush();
                $num = 0;
            }
            $row = $data[$i];
            foreach ($row as $key => $value) {
            	//转码
                $row[$key] = iconv('utf-8', 'gbk', $value);
            }
            fputcsv($file, $row);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值