18910140161

100万数据导出excel,php excel导出十万数据的解决方案?

顺晟科技

2022-10-09 10:34:10

207

使用PHP spreadsheet包导出至.xlsx文件,一次性循环万级的数据就容易内存溢出,有没有什么比较靠谱的导出方案呢?

提供个思路:

放开内存限制 ini_set('memory_limit', '1024M');excel 可以导出为 xml 文件,反过来也可以打开 xml 文件;
这样就可以通过拼接生成 xml 文件实现导出十万数据;
xml 文件头 + 遍历数据分批写入文件(数据可以增量从数据库读取) + 文件尾。

咱们打开一下思路,或许可以让前端来把几个csv分别下载之后,通过前端来合并成出excel文件,不但能减少后端阻塞、网络阻塞,还把相当一部分内存压力转给用户的客户端。
希望能帮助到你。

首先提问一问题。导出数据为什么要用xlsx格式。如果你不需要合并表格,然后表格有富文本的话。
那么你可以考虑导出为csv
csv导出可以采取追加写到文件。Excel却不行,它只能写到内存,一次性输出。

一种:加buffer, 批量写进去,写完部分就释放内存
另一种:生成多个 excel, 打个zip 包让用户下载

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航