php 导出数据成excel 可以几十条几十条 循序插入到一个表格里面吗

phpexcel 怎么能实现导出数据库的时候 类似于火车是的 先导出十条存到表格里 然后刷新页面 再次执行这个方法 然后插入到之前十条的后边 这样循序的一直到查询完数据

阅读 4.3k
9 个回答

你问题表述的不够清楚,但我还是能理解你的意思。你的问题本质上就是导出数据过大,能不能分批次导出到同一个文件的问题。你给出的解决方案是不断刷新页面

伪代码大概是这样:

当前页 = $_GET['page'];

数据源 = 根据页号从数据库获取数据;

if (数据源没有数据) {
 重定向函数(EXECEL文件下载的url)
}

if (当前页 == 1) {
    创建excel文件并把数据写到文件中
} else {
    打开文件并把数据追加到文件中
}


重定向函数(当前页URL?page=当前页+1)

理论上是可行的,但是实际上没人会这么做,一方面不断刷新页面用户体验很不友好,一方面如果用户在刷新过程中不耐烦关掉了这个页面呢?程序的健壮性、可靠性都不强,这种非常耗时的操作一般是要进消费者队列,由消费进程进行导出操作,消费进程一般运行在CLI模式下,没有超时问题,这种方式也有个弊端,就是要用户过段时间点击系统生成的EXCEL文件进行下载。但可靠性比前者高多了。

刷新页面什么意思?PHP代码在服务器上运行着,怎么刷新页面?

其实楼主问的实现形式是类似之前织梦cms生成静态页面的那种操作形式,
url控制跳转自己并且增加页码++,属于把循环的过程放到了页面的跳转上来解决问题防止超时。
但现代浏览器会防止这种多次重定向的情况实际上已经不太好实现你理想中的交互方式实现目标功能了.

目前最好是cli导出或者微服务控制另外一个专门导出的程序去导出,导出以后通过附件邮箱发送到导出人。

如果考虑的是同时导出大量数据超时的问题,可以把导出的文件先保存在服务器上,后续在写入同一个文件就可以
当数据全部写入后再提供下载

导出到服务器里的excel文件?

你说的是 flush 缓存把

导出csv格式的貌似就快很多,不知道能不能接受

首先你得先了解excel的本质。他不是跟CSV一样,单纯的文本,其实是XML结构。那么想通过追加的方式写入到excel是不可能的。

答案是肯定的 , phpexcel 提供了整套系列的excel处理
只需要取对应数据库中的一个标识符定位, 比如ID , 每次运行时读取 excel文件的最后一行的id , 然后取数据库中 where>id limit 10 添加到excel中 , 这样每次执行都会读取10条数据导出到excel中 直到所有数据导出

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题