整个过程用时5分钟,最终生成的csv文件大小420M。



对于如何用phpexcel导出大数据,并没有什么比较好的方案,phpexcel提供的一些缓存方法,数据压缩,虽然内存使用小了,但所用时间则加长了,时间换空间,显然并不是最好的方案。比较靠谱的方法还是生成多个下载链接地址,把你要下载的数据,以get形式传递当前页数,后台进行数据分页然后导出。
<a href="/downSearchData.php?参数1=值1&参数2=值2&page=1" rel="external nofollow" >下载汇总结果1</a> <a href="/downSearchData.php?参数1=值1&参数2=值2&page=2" rel="external nofollow" >下载汇总结果2</a> <a href="/downSearchData.php?参数1=值1&参数2=值2&page=3" rel="external nofollow" >下载汇总结果3</a>
比如你有一个查询数据表单,ID为searchFrm,然后你想把导出数据按1万条分割(phpexcel一次导出1万条是没有问题的,效率还行)
<form id="searchFrm">
姓名<input type="text" name="uname">
<input type="button" id="searchDataBtn" value="导出汇总结果">
</form>
<div id="searchDataList"></div>
<script type="script">
$("#searchDataBtn").on("click", function() {
var params = $("#searchFrm").serialize();
//获取查询数据的条数
$.get("/getSearchDataRows?" + params, function(data) {
var downDataList = "";
if(data["rows"]) {
//rows是数据总条数,pageSize是一页多少条
var pageNum = Math.ceil(data["rows"] / data["pageSize"]);
for(var i = 1; i <= pageNum; ++i) {
downDataList += "<a href='/downSearchData.php?'" + params + "&page=" + i + ">下载汇总结果" + i + "</a> ";
}
$("#searchDataList").html(downDataList);
} else {
$("#searchDataList").text("没有数据");
}
}, "json");
return false;
});
</script>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。







