PHP导出数据到Excel,支持大数据量

对于PHP的应用,操作EXCEL,有一些开源的类库,例如:PHPExcel 。

 

本文介绍的不是使用第三方的类库,而是使用PHP自带的功能,那就是 fputcsv 这个函数,fputcsv是PHP5引入的函数。

 

如果你使用的是PHP4,那么请使用自定义函数。

 

<?php

// 输出Excel文件头 

header('Content-Type: application/vnd.ms-excel;charset=gbk');

header('Content-Disposition: attachment;filename="文件名.csv"');

header('Cache-Control: max-age=0');

 

// 从数据库中获取数据 

$sql = 'select * from `table` where ……';

$stmt = @mysql->query($sql);

 

// PHP文件句柄,php://output 表示直接输出到浏览器 

$fp = fopen('php://output', 'a');

 

// 输出Excel列头信息 

$head = array('姓名', '性别', '年龄', 'Email', '电话', '……');

foreach ($head as $i => $v) {

    // CSV的Excel支持GBK编码,一定要转换,否则乱码 

    $head[$i] = iconv('utf-8', 'gbk', $v);

}

 

// 写入列头 

fputcsv($fp, $head);

 

// 计数器 

$cnt = 0;

// 每隔$limit行,刷新一下输出buffer,节约资源 

$limit = 100000;

 

// 逐行取出数据,节约内存 

while ($row = $stmt->fetch(FETCH_NUM)) {

 

    $cnt ++;

    if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 

        ob_flush();

        flush();

        $cnt = 0;

    }

 

    foreach ($row as $i => $v) {

        $row[$i] = iconv('utf-8', 'gbk', $v);

    }

    fputcsv($fp, $row);

}


本文摘自:http://www.icode100.com/posts/view/45

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值