PHP导出MySQL数据到Excel文件(fputcsv)

这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。
复制代码 代码如下:

// 输出Excel文件头,可把user.csv换成你要的文件名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="user.csv"');
header('Cache-Control: max-age=0');

// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql = 'select * from tbl where ……';
$stmt = $db->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写到文件句柄
fputcsv($fp, $head);

// 计数器
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;

// 逐行取出数据,不浪费内存
while ($row = $stmt->fetch(Zend_Db::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);
}

优点简单易用,非常节省内存,不依赖第三方类库。

时间: 2024-11-01 20:50:59

PHP导出MySQL数据到Excel文件(fputcsv)的相关文章

PHP导出MySQL数据到Excel文件(fputcsv)_php技巧

这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件. 复制代码 代码如下: // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="user.csv"'); header('Cache-Control: max-age=0'); // 从数据库中获取

PHP导出MySQL数据到Excel文件

// 输出Excel文件头,可把user.csv换成你要的文件名   header('Content-Type: application/vnd.ms-excel');   header('Content-Disposition: attachment;filename="user.csv"');   header('Cache-Control: max-age=0');   // 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可   $sql = '

PHP实现导出MySQL数据到Excel文件

// 输出Excel文件头,可把user.csv换成你要的文件名     header('Content-Type: application/vnd.ms-excel');     header('Content-Disposition: attachment;filename="user.csv"');     header('Cache-Control: max-age=0');     // 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可  

php使用指定编码导出mysql数据到csv文件的方法

 本文实例讲述了php使用指定编码导出mysql数据到csv文件的方法.分享给大家供大家参考.具体实现方法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 <?php /* * PH

php使用指定编码导出mysql数据到csv文件的方法_php技巧

本文实例讲述了php使用指定编码导出mysql数据到csv文件的方法.分享给大家供大家参考.具体实现方法如下: <?php /* * PHP code to export MySQL data to CSV * * Sends the result of a MySQL query as a CSV file for download * Easy to convert to UTF-8. */ /* * establish database connection */ $conn = mysq

PHP导出MySQL数据到Excel的方法介绍

经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如 PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件. <?php // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachm

java导出数据到excel文件中

问题描述 怎么用java代码,来实现导出数据到excel文件中,引用包是poi的,不要jxl包的,请详细说说步骤啊.最好也讲讲导入excel 解决方案 解决方案二:google例子多的去了解决方案三:先简单介绍一下poi,poi是apache组织的一个开源项目,最新版为poi-3.0.1,要使用poi需要到apache网站下载poi-bin3.0.1.zip压缩包,并将poi-3.0.1.jar加入到项目的ClassPath中.下面是完成这个实例的步骤:1.建立好一个web工程:poi:2.导入

导出大数据量excel,用POI

问题描述 导出大数据量excel,用POI 需要导出的数据量可能非常大(超过10W条),而且要照顾到没装07Excel的机器,不能用SXSSFworkbook.鉴于一个sheet页最多65000多条记录,那么大数据就需要多个sheet页.由于导出前要先查数据库,是应该一次查出所有数据然后导出还是分次查询?每次查询65000条数据? 解决方案 这么大的文件,excel 2003未必能打开.建议分页存入多个excel文件. 解决方案二: 看速度和效率了,分次是不是速度还快点

crond-centos6.5 定时备份mysql 导出mysql数据大小为0

问题描述 centos6.5 定时备份mysql 导出mysql数据大小为0 centos定时任务 执行mysql数据备份 在/home/www/shell/ 写了个shell脚本 加入执行权限 定时执行的时候 到处的sql文件大小为0 且没有错误log输出 如果单独执行./xxx.sh 导出的sql正常 问题蛮怪 不知道有没有碰到的