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

来源:互联网 发布:优化电脑配置的软件 编辑:程序博客网 时间:2024/06/05 14:54

对于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

原创粉丝点击