重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
php导出数据excel有专门的库,当导出少量数据的时候速度很快,但是当数据量大的时候就会存在服务器内存不够之类的。
创新互联公司网站建设服务商,为中小企业提供成都网站建设、成都做网站服务,网站设计,网站托管运营等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联公司。
所以在导出大量数据的时候就应该分页查询数据,避免服务器宕机。正好PHP提供了fputcsv函数可以将数据写入到csv文件中。
这样我们就可以使用PHP对数据进行分页查询,再写入到csv文件中。
生成excel 把数据库的数据导入到excel就行了,教你个简单的写法
?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
echo "test1\t";
echo "test2\t\n";
?
\n结尾的是换行 \T是下一个单元格,直接查询输出就行
不带格式的:
1、 直接写csv文件。
2、COM调用adodb操作excel读取
想要带格式的标准xls文件:
请用COM调用adodb读取,然后调用excel.application格式化。
其他的方法就是扯淡,别给我说
1、phpexcel,那资源消耗只适合玩单机,兼容性也不够!
2、pear的可以带格式输出,但兼容性很差,经常打不开
3、xml方式,制作模板 比较费时。
总结:不带格式,就用csv最简单
想带格式就用adodb+excel.application来操作,(注意:excel 格式化很慢,adodb导出很快,带格式写excel就是个悲剧!)
1、首先创建要插入100万数据的表格,随机产生数字。
2、其次创建存储过程,并向表中插入数据,调用存储过程进行插入数据,插入300万条数据,且分几次插入。
3、最后导出数据到csv,使用函数selectxxxintooutfile,其中outfile后面的路径可以是Windows或macOS或者Linux。
$fp = fopen('php://output', 'a');
// 输出Excel列名信息
$head = array("电子邮件");
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($email);
for($t=0;$t$count;$t++) {
$cnt ++;
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
$cnt = 0;
}
$row[] = $email[$t];
foreach ($row as $i = $v) {
$row[$i] = iconv('utf-8', 'gbk', $v);
}
fputcsv($fp, $row);
unset($row);
}
php导出数据有两种方式,一种是通过封装好的phpexcel导出,一种是通过table导出数据,指定header就可以导出数据。
上面是导出到excel中的方法,当然你也可以导出数据直接到数据库,或者你也可以到处数据到文件中,这个主要看你导出数据的格式要求。
看你截图显示的是数组格式,可以通过循环遍历然后导入到响应的文件中。