PHP Excel
来源:互联网 发布:新开户数据 编辑:程序博客网 时间:2024/06/03 23:00
经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。
01
// 输出Excel文件头,可把user.csv换成你要的文件名
02
header(
'Content-Type: application/vnd.ms-excel'
);
03
header(
'Content-Disposition: attachment;filename="user.csv"'
);
04
header(
'Cache-Control: max-age=0'
);
05
// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
06
$sql
=
'select * from tbl where ……'
;
07
$stmt
=
$db
->query(
$sql
);
08
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
09
$fp
=
fopen
(
'php://output'
,
'a'
);
10
// 输出Excel列名信息
11
$head
=
array
(
'姓名'
,
'性别'
,
'年龄'
,
'Email'
,
'电话'
,
'……'
);
12
foreach
(
$head
as
$i
=>
$v
) {
13
// CSV的Excel支持GBK编码,一定要转换,否则乱码
14
$head
[
$i
] = iconv(
'utf-8'
,
'gbk'
,
$v
);
15
}
16
// 将数据通过fputcsv写到文件句柄
17
fputcsv
(
$fp
,
$head
);
18
// 计数器
19
$cnt
= 0;
20
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
21
$limit
= 100000;
22
// 逐行取出数据,不浪费内存
23
while
(
$row
=
$stmt
->fetch(Zend_Db::FETCH_NUM)) {
24
$cnt
++;
25
if
(
$limit
==
$cnt
) {
//刷新一下输出buffer,防止由于数据过多造成问题
26
ob_flush();
27
flush
();
28
$cnt
= 0;
29
}
30
foreach
(
$row
as
$i
=>
$v
) {
31
$row
[
$i
] = iconv(
'utf-8'
,
'gbk'
,
$v
);
32
}
33
fputcsv
(
$fp
,
$row
);
34
}
0 0
- php excel
- php excel
- php excel
- PHP Excel
- PHP-PHP操作Excel-php-excel-reader
- php-excel-reader,PHP解析Excel文件
- 总结 php导出Excel php
- php操作excel
- php导出excel
- php操作excel类
- PHP生成EXCEL表格
- PHP 导出EXCEL报表
- php生成EXCEL文件
- PHP生成EXCEL
- PHP生成EXCEL
- PHP 导入Excel
- PHP声称EXCEL
- php导出Excel方法
- Launcher的简单讲解二
- 从待遇和前景上看.net都不如java
- Android 系统设置中显示设置之屏幕旋转和字体设置篇
- 菜鸟学android——Notification、PendingIntent问题
- 资讯_CHM格式帮助文档打开后,链接无效,不能查看信息时,怎么办?
- PHP Excel
- Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件
- PDF格式转换器免费下载
- 第9周项目5-程序填充题(2)
- 掉电脑有毒
- 使用Java程序调用本地转换盒作业,资源库中的转换和作业(kettle4.2)
- R正则表达式30分钟入门教程
- android之简单的ListView
- 在SurfaceView中使用双缓冲