如何实现ThinkPHP3.2的数据导出功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计351个文字,预计阅读时间需要2分钟。
ThinkPHP 3.2 数据导出,亲测导出8万条数据无任何问题订单导出* @param $where* /*** 导出全部订单* **/function export($where){ $f_name=全部订单; // 列名称谓 $title=array('序号', '商品名称', '手机号', '验证状态');}
/** * 订单导出 * @param $where */ function export($where) { $f_name = "全部订单"; //列名称 $title = array('序号', '奖品名称', '手机号', '验证状态', '验证时间', '抽奖时间' ); $fileName = $f_name . date('_YmdHis');//文件名称 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $fileName . '.csv"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 ob_flush(); flush(); $order = M("Order"); $f = "title,mobile,status,api_time,add_time";//尽量只取需要的字段,不要取出全部 $o = 'id desc'; //分页查 $total_count = M('order')->where($where)->count(); $num_page = 5000; $page = ceil($total_count / $num_page); //创建临时存储内存 $fp = fopen('php://memory', 'w'); //商品只有6个 所以全部取出 $order_type = M("Goods")->getField("type,title", true); fputcsv($fp, $title, ','); $i =1; for ($j = 0; $j < $page; $j++) { $num = $num_page * $j; $limit = $num . ',' . $num_page; $data = $order->field($f)->where($where)->order($o)->limit($limit)->select(); foreach ($data as $item) { $title = $order_type[$item['title']]; $xlsData = array($i, $title, "\t" . $item['mobile'], $item['status'] ? '已验证' : '未验证', "\t" . $item['api_time'], "\t" . $item['add_time'] ); fputcsv($fp, $xlsData, ','); $i++; } } rewind($fp); $content = ""; while (!feof($fp)) { $content .= fread($fp, 1024); } fclose($fp); $content = iconv('utf-8', 'gbk', $content);//转成gbk,否则excel打开乱码 echo $content; exit; }
本文共计351个文字,预计阅读时间需要2分钟。
ThinkPHP 3.2 数据导出,亲测导出8万条数据无任何问题订单导出* @param $where* /*** 导出全部订单* **/function export($where){ $f_name=全部订单; // 列名称谓 $title=array('序号', '商品名称', '手机号', '验证状态');}
/** * 订单导出 * @param $where */ function export($where) { $f_name = "全部订单"; //列名称 $title = array('序号', '奖品名称', '手机号', '验证状态', '验证时间', '抽奖时间' ); $fileName = $f_name . date('_YmdHis');//文件名称 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $fileName . '.csv"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 ob_flush(); flush(); $order = M("Order"); $f = "title,mobile,status,api_time,add_time";//尽量只取需要的字段,不要取出全部 $o = 'id desc'; //分页查 $total_count = M('order')->where($where)->count(); $num_page = 5000; $page = ceil($total_count / $num_page); //创建临时存储内存 $fp = fopen('php://memory', 'w'); //商品只有6个 所以全部取出 $order_type = M("Goods")->getField("type,title", true); fputcsv($fp, $title, ','); $i =1; for ($j = 0; $j < $page; $j++) { $num = $num_page * $j; $limit = $num . ',' . $num_page; $data = $order->field($f)->where($where)->order($o)->limit($limit)->select(); foreach ($data as $item) { $title = $order_type[$item['title']]; $xlsData = array($i, $title, "\t" . $item['mobile'], $item['status'] ? '已验证' : '未验证', "\t" . $item['api_time'], "\t" . $item['add_time'] ); fputcsv($fp, $xlsData, ','); $i++; } } rewind($fp); $content = ""; while (!feof($fp)) { $content .= fread($fp, 1024); } fclose($fp); $content = iconv('utf-8', 'gbk', $content);//转成gbk,否则excel打开乱码 echo $content; exit; }

