用phpexcel一次写一张纸
我正在使用phpexcel编写xlsx文件 它工作正常,只是我的内存不足 这是因为我在同一个文件中写入了两张工作表,都有15k+行 我想做的是 创建一张工作表,然后将其保存到文件中,或者在某个地方进行消毒,这样它就不会占用太多空间 创建下一张图纸 处理输出 有什么方法可以做到这一点吗?基本上:用phpexcel一次写一张纸,php,phpexcel,Php,Phpexcel,我正在使用phpexcel编写xlsx文件 它工作正常,只是我的内存不足 这是因为我在同一个文件中写入了两张工作表,都有15k+行 我想做的是 创建一张工作表,然后将其保存到文件中,或者在某个地方进行消毒,这样它就不会占用太多空间 创建下一张图纸 处理输出 有什么方法可以做到这一点吗?基本上: while(... have sheet 1 data...) { build sheet 1 } while(... have sheet 2 data...) { build sheet
while(... have sheet 1 data...) {
build sheet 1
}
while(... have sheet 2 data...) {
build sheet 2
}
而不是
while (... have data...) {
add to sheet 1
add to sheet 2
}
如果无法将整个电子表格保存在内存中,则必须增加内存限制。据我所知,PHPExcel和其他电子表格构建库不能使用磁盘上的表示,只能使用内存中的表示。虽然PHPExcel被描述为“内存中”电子表格,并且受到PHP内存限制的限制,但可以通过使用单元缓存来减少所需的内存。该技术在开发人员文档(第4.2.1节)中有详细描述,可配置为压缩内存中的单元对象,或将单元数据缓存到内存缓存(如APC、Wincache或memcache)或磁盘。它可以减少多达60%的内存使用,尽管这是以速度为代价的。使用单元格缓存可能允许您在同一工作簿中创建两个工作表,而不会耗尽内存 如果要创建两个工作簿,每个工作簿有一个工作表,而不是一个工作簿有两个工作表,那么在开始构建第二个工作簿之前,您需要在保存第一个工作簿后从内存中刷新它。。。否则,您将节省很少的内存。由于工作簿对象中存在循环引用,因此在取消设置PHPExcel对象之前需要先中断这些引用。开发人员文档第4.3节对此进行了描述