2010-06-03 8 views
5

PHPExcel1.7.3c를 사용하여 17MB Excel 파일 (2003)을 읽으려고합니다. 그러나 파일을로드하는 동안 이미 120 초 제한을 초과 한 후 파일이 손상됩니다. 보다 효율적으로 할 수있는 다른 라이브러리가 있습니까? 스타일을 지정할 필요가 없습니다. UTF8을 지원하기 만하면됩니다. 당신의 도움에 감사드립니다PHP로 큰 Excel 파일 읽기

답변

8

PHPExcel을 사용할 때 Filesize는 좋은 측정 방법이 아니므로 각 워크 시트의 셀 수 (rowsxcolumns)를 파악하는 것이 더 중요합니다. 당신은 스타일에 대한 필요가없는 경우

, 당신은 요구하고있다 :

$objReader->setReadDataOnly(true); 

파일을로드하기 전에? 워크 시트 내의 모든 워크 시트, 또는 특정 세포에 액세스 할 필요가없는 경우

,

이되는 readFilter을

$objReader->setLoadSheetsOnly(array(1,2)) 

또는

$objReader->setLoadSheetsOnly(1) 

을 사용하거나 정의를 보면 셀 캐싱을 사용하고 있습니까? 그렇다면 어떤 방법입니까? 그러면로드 시간이 늦어집니다.

1

17MB는 상당한 파일입니다.

1MB 파일을 분석하는 데 걸리는 시간으로, 17MB 파일의 소요 시간을 계산할 수 있습니다. 그런 다음 한 가지 옵션으로 120 초 제한을 늘릴 수 있습니다.

또는 CSV로 내보낼 수 있습니다.이 CSV는 더 효율적인 방법이며 PHP의 fgetcsv를 통해 가져올 수 있습니다.

1

큰 파일을 읽을 때 Excel Explorer이 더 좋다는 이야기를 들었습니다.

+2

상업용으로 500 달러라면 더 좋을 것입니다. –

+0

가격 및 품질에는 상관 관계가 없습니다. 자신의 웹 응용 프로그램에 사용할 경우에만 $ 99 개인 라이센스가 필요합니다. – Sjoerd

0

어쩌면 변환/csv로 내보내기, 내장 fgetcsv() 사용할 수 있습니다. 어떤 종류의 기능이 필요한지에 달려 있습니다. 당신이 당신의 읽기에서 필요로하는 유일한 것은 Excel 파일 데이터 인 경우

2

, 여기에 큰 엑셀 파일을 읽을 수있는 길입니다 :

내가 예와 데비안/우분투, 내 서버에 gnumeric과를 설치 : 는 apt-get을 설치 gnumeric과

그런 다음 PHP 내 엑셀 파일을 읽고 매우 간단 (치수는 행과 COLS 있습니다)되는 두 개의 dimensionnal 데이터 배열로 저장하기 위해 호출

system("ssconvert \"$excel_file_name\" \"temp.csv\""); 
$array = array_map("str_getcsv", file("temp.csv")); 

그럼 내가 할 수있는 내가 함께 원하는 내 정렬. 10MB 크기의 큰 xls 파일의 경우 10 초 미만의 시간이 걸리며, 동시에 좋아하는 스프레드 시트 소프트웨어에 파일을로드해야합니다.

매우 큰 파일의 경우 file() 함수를 사용하여 전체 csv 파일을 메모리에 저장하지 않으려면 fopen() 및 file_getcsv() 함수를 사용해야하며 거대한 배열에 데이터를 저장하지 않고 수행해야합니다. . 이것은 느리지 만 모든 서버의 메모리를 먹지는 않습니다!