2011-04-06 8 views
1

xlsx 파일을 작성하는 데 phpexcel을 사용하고 있습니다.한 번에 한 시트 씩 phpexcel로 작성하십시오.

메모리가 부족한 경우를 제외하면 정상적으로 작동합니다.

동일한 파일에 두 장을 모두 쓰고 있는데, 둘 다 15k + 행을 사용하기 때문입니다. 내가 원하는 무엇

는 한 장을 만들고, 파일에 저장하거나 많은 공간을 차지 나던, 그래서 어딘가 소독

입니다.

다음 시트를 만듭니다.

출력을 처리하십시오.

이렇게 할 방법이 있습니까? 기본적으로

답변

0

PHPExcel은 "메모리 내"스프레드 시트로 설명되며 PHP의 메모리 제한에 의해 제약을 받지만 셀 캐싱을 사용하여 필요한 메모리를 줄일 수 있습니다. 이 기술은 개발자 문서 (4.2.1 절)에 모두 설명되어 있으며 메모리의 셀 객체를 압축하거나 APC, Wincache 또는 memcache 또는 디스크와 같은 메모리 캐시에 셀 데이터를 캐시하도록 구성 할 수 있습니다. 속도면에서는 비용이 많이 들지만 메모리 사용량을 최대 60 %까지 줄일 수 있습니다. 셀 캐싱을 사용하면 메모리가 부족하지 않은 상태에서 동일한 통합 문서에 두 워크 시트를 모두 만들 수 있습니다.

워크 시트 두 개가있는 통합 문서가 아닌 워크 시트 한 개가있는 두 개의 통합 문서를 만들려면 첫 번째 통합 문서를 저장 한 후에 메모리에서 플러시해야합니다. 두번째 ... 그렇지 않으면 너는 기억을 거의 잃지 않을 것이다. 통합 문서 개체 내에서 주기적으로 참조되므로 PHPExcel 개체를 설정 해제하기 전에이 개체를 분리해야합니다. 개발자 설명서 섹션 4.3

에 설명되어 있습니다.
0

:

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과 다른 스프레드 시트 빌딩 라이브러리는 온 - 디스크 표현으로 작동하지 않으며 메모리에 적합합니다.

관련 문제