Home  >  Article  >  php教程  >  php fputcsv函数将mysql数据库导出到excel文件

php fputcsv函数将mysql数据库导出到excel文件

WBOY
WBOYOriginal
2016-05-25 12:57:291415browse

fputcsv() 函数将行格式化为 CSV 并写入一个打开的文件,该函数返回写入字符串的长度,若出错,则返回 false.

说明:fputcsv() 将一行(用 fields 数组传递)格式化为 CSV 格式并写入由 file 指定的文件.

PHP实例代码如下:

<?php
// 输出Excel文件头,可把user.csv换成你要的文件名
header(&#39;Content-Type: application/vnd.ms-excel&#39;);
header(&#39;Content-Disposition: attachment;filename="user.csv"&#39;);
header(&#39;Cache-Control: max-age=0&#39;);
// 从数据库教程中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql = &#39;select * from tbl where ……&#39;;
$stmt = $db->query($sql);
// 打开PHP文件句柄,php教程://output 表示直接输出到浏览器
$fp = fopen(&#39;php://output&#39;, &#39;a&#39;);
// 输出Excel列名信息
$head = array(
    &#39;姓名&#39;,
    &#39;性别&#39;,
    &#39;年龄&#39;,
    &#39;Email&#39;,
    &#39;电话&#39;,
    &#39;……&#39;
);
foreach ($head as $i => $v) {
    // CSV的Excel支持GBK编码,一定要转换,否则乱码
    $head[$i] = iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $v);
}
// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);
// 计数器
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;
// 逐行取出数据,不浪费内存
while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
    //开源代码phprm.com
    $cnt++;
    if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
        ob_flush();
        flush();
        $cnt = 0;
    }
    foreach ($row as $i => $v) {
        $row[$i] = iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $v);
    }
    fputcsv($fp, $row);
}


文章链接:

随便收藏,请保留本文地址!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn