🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
  开发中经常会碰到导出MySQL数据到Excel文件的需求。一些开源的类库,如PHPExcel,确实比较容易实现,但由于对大量数据的兼容很不好,很容易到达PHP内存使用上限。   小编整理了一下fputcsv写CSV文件的方式,具体实现代码如下 ~~~ //声明文件头,文件名news.csv,需自行修改 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="news.csv"'); header('Cache-Control: max-age=0'); //打开文件句柄,并输出至浏览器 $fp = fopen('php://output', 'a'); //定义并输出Excel列名 $t = array('编号', '标题'); foreach ($t as $_k => $_v) { //转码,CSV的Excel支持GBK编码 $t[$_k] = iconv('utf-8', 'gbk', $_v); } fputcsv($fp, $t); //操作数据库,读取数据 $condition = '1'; $result = $db->query("SELECT * FROM e_article WHERE {$condition}"); //初始化计数器 $i = 0; //定义刷新输出缓冲频率行数 $limit = 100000; while($r = $db->fetch_array($result)) { $i++; if($i < $limit){ //刷新输出buffer ob_flush(); flush(); $i = 0; } //转码 foreach ($r as $k => $v) { $r[$k] = iconv('utf-8', 'gbk', $v); } fputcsv($fp, $r); } $db->free_result($result); ~~~