高效的php 导出 xls,csv 的方法
来源:互联网 发布:建站工具源码 编辑:程序博客网 时间:2024/06/05 14:14
经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。
<?php// 输出Excel文件头,可把user.csv换成你要的文件名header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="user.csv"');header('Cache-Control: max-age=0');include './Mysql.class.php';//mysql 用你自己的操作类就可以$db = new mysql();// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可$sql = 'select id,user_login from wp_users';$stmt = $db->getAll($sql);// 打开PHP文件句柄,php://output 表示直接输出到浏览器$fp = fopen('php://output', 'a');// 输出Excel列名信息$head = array("id", "姓名");foreach ($head as $i => $v) { // CSV的Excel支持GBK编码,一定要转换,否则乱码 $head[$i] = iconv('utf-8', 'gbk', $v);}// 将数据通过fputcsv写到文件句柄fputcsv($fp, $head);// 计数器$cnt = 0;// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小$limit = 100000;// 逐行取出数据,不浪费内存$count = count($stmt);for($t=0;$t<$count;$t++) { $cnt ++; if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 ob_flush(); flush(); $cnt = 0; } $row = $stmt[$t]; foreach ($row as $i => $v) { $row[$i] = iconv('utf-8', 'gbk', $v); } fputcsv($fp, $row);}
0 0
- 高效的php 导出 xls,csv 的方法
- php 导出 xls,csv 的方法,csv导入mysql
- php导出csv,xls
- php导出CSV的方法
- PHP导出excel(*.xls)文件的简单方法
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- PHP导出csv,xls,xlsx文件
- 简单快速的导出数据为Xls或CSV
- 用csv格式的文件代替poi导出xls文件
- php导出CSV的实现
- php导出CSV方法
- php导出CSV方法
- PHP中使用CSV导出数据的方法
- php导入导出CSV格式的数据
- php导出CSV方法 (转)
- php利用phpexcel插件实现数据的导入和导出(支持csv\xls\xlsx格式和超过26个字段列)
- xls xlsx csv 导出datatable
- PHP导出MySQL数据库为EXCEL文件格式(.xls)的方法 http://www.kankanblog.com/read.php/144.htm
- 浅谈Python网络爬虫 ArkTeam [认证作者] 2017-05-02
- 【LeetCode】Find Mode in Binary Search Tree 解题报告
- CAD2016获得当前布局代码C#
- jQuery初识
- Android HandlerThread 总结使用
- 高效的php 导出 xls,csv 的方法
- Android SDK 环境变量配置
- ArcGis for javascript api 在eclipse中搭建运行环境
- 521. Longest Uncommon Subsequence I(C语言)
- 趣味编程--JavaScript--让花花转不停
- 二维码扫描实现
- java查询数据库表卡死,解决方法
- nodejs入门
- WAPI协议完整性测试之指定字段报文测试