php导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包解决。
专注于为中小企业提供做网站、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业衡山免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询。
原因:主要是数据库性能和写文件性能。分页查询可以解决数据库压力的问题, 生成多个文件可以解决单个文件太大,后期维护Excel文件的问题。
要注意的:
1. 在导出逻辑文件开头,一定要声明 set_time_limit(0) ,防止脚本超时;
2. 每个文件生成后,适当的sleep一下,让程序休息一下下;
3. 因为一次导出最后要将生成的多个Excel文件打包成一个压缩包,所以要删除掉生成的Excel文件,节省服务器存储空间;
下面是字符串
$query="select * from member where fenlei in (1,2,3,4) order by id desc";
$result=mysql_query($query,$db);
$len=1;
$i = 0;
while ($res=mysql_fetch_array($result))
{
$arraylist[$len].=$res['fenlei'].'-'.$res[name].'br';
$i++;
if(is_int($i/10))
{
$len++;
$i = 0;
}
}
echo $arraylist[1];
echo $arraylist[2];
echo $arraylist[3];
echo $arraylist[4];
下面是数组,
$query="select * from member where fenlei in (1,2,3,4) order by id desc";
$result=mysql_query($query,$db);
$len=1;
$i = 0;
while ($res=mysql_fetch_array($result))
{
$arraylist[$i] = $res[name];
$i++;
$tr_list[$len] = $arraylist;
if(is_int($i/10))
{
$len++;
$i = 0;
}
}
print_r($tr_list[1]);
print_r($tr_list[2]);
print_r($tr_list[3]);
print_r($tr_list[4]);
你给出的数据组织形式,貌似是json,那么你可以直接用json_encode() 和 json_decode()进行转换后,再进行处理。
示例代码:
?php
$json = '{
"6846": {
"userid": "6846",
"expertname": "三剑客",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "1",
"curpaiming": "1"
},
"9205": {
"userid": "9205",
"expertname": "东方诸葛",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "2",
"curpaiming": "2"
},
"9213": {
"userid": "9213",
"expertname": "神探老李",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "3",
"curpaiming": "3"
},
"17518": {
"userid": "17518",
"expertname": "草原雄鹰",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "4",
"curpaiming": "4"
}
}';
echo 'Pre';
print_r( json_decode($json,true) );
echo '/pre';
?
mysql:SELECT * FROM table order by rand() limit 10;
从数据库随机取出来之后再用php处理一下,按照你的需求再排序咯。然后楼主还有什么疑问的话,还不懂,可以去后盾人看看,里面有些资料,兴许能够帮助你
php导出数据有两种方式,一种是通过封装好的phpexcel导出,一种是通过table导出数据,指定header就可以导出数据。
上面是导出到excel中的方法,当然你也可以导出数据直接到数据库,或者你也可以到处数据到文件中,这个主要看你导出数据的格式要求。
看你截图显示的是数组格式,可以通过循环遍历然后导入到响应的文件中。