PHPExcel – заставляем его меньше жрать или Allowed memory size of

подключаем

require_once (DIRECTORY_SEPARATOR .'classes'. DIRECTORY_SEPARATOR .'PHPExcel'. DIRECTORY_SEPARATOR .'IOFactory.php');

по умерим аппетит

	$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
	$cacheSettings = array( ' memoryCacheSize ' => '8MB');
	PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);


с диапазонами тоже самое (согласно вашим требованиям)

	class MyReadFilter implements PHPExcel_Reader_IReadFilter {
		public function readCell($column, $row, $worksheetName = '') {
			//  Read rows 1 to 7 and columns A to E only
			if ($row >= 1 && $row <= 10000) {
			   if (in_array($column,range('A','F'))) {
				  return true;
			   }
			}
			return false;
		}
	}
$filterSubset = new MyReadFilter();
$objReader->setReadFilter($filterSubset);

явно укажем тип

$inputFileType = 'Excel5';
$objReader = PHPExcel_IOFactory::createReader($inputFileType);

и последний штрих уберем лишнее

$objReader->setReadDataOnly(true);

есть еще один прием это частичное чтение таблицы , но мне и этого хватило

пс в конце не забываем сделать

$objPHPExcel->disconnectWorksheets();
unset($objPHPExcel);

ниже мой рабочий кусок

	class MyReadFilter implements PHPExcel_Reader_IReadFilter {
		public function readCell($column, $row, $worksheetName = '') {
			//  Read rows 1 to 7 and columns A to E only
			if ($row >= 1 && $row <= 10000) {
			   if (in_array($column,range('A','F'))) {
				  return true;
			   }
			}
			return false;
		}
	}		

	$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
	$cacheSettings = array( ' memoryCacheSize ' => '8MB');
	PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

	$filterSubset = new MyReadFilter();
	$inputFileName = xxx.xls';
	try {
		$inputFileType = 'Excel5';
		$objReader = PHPExcel_IOFactory::createReader($inputFileType);
		$objReader->setReadFilter($filterSubset);
		$objReader->setReadDataOnly(true);
		$objPHPExcel = $objReader->load($inputFileName);
	} catch(Exception $e) {
		die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
	}

	$sheet = $objPHPExcel->getSheet(0);
	$highestRow = $sheet->getHighestRow();
	$highestColumn = $sheet->getHighestColumn();

	$petsproduct_sku = array();
	for ($row = 5; $row <= $highestRow; $row++){
		$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL,	TRUE, FALSE);
		$petsproduct_sku[$rowData[0][0]] = array('brand'=>$rowData[0][1], 'name'=>$rowData[0][2], 'size'=>$rowData[0][4], 'price'=>$rowData[0][5]);
	}
	unset($rowData);
	$objPHPExcel->disconnectWorksheets();
    unset($objPHPExcel);
	unset($filterSubset);