Парсинг xlsx больших файлов

Загружаю файл из распакованного архива xlsx - sharedStrings.xml (>20мб)
$xml = simplexml_load_file('sharedStrings.xml');
Скрипт на хостинге. Не мой сервер. Файл меньшего размера грузит, а этот нет.
Вывод: ограничена память на хостинге. (Да и не рационально 200тыс. строк грузить за раз)

Как можно решить данную проблему?
  • Вопрос задан
  • 3745 просмотров
Решения вопроса 1
@Ualde
set_include_path(get_include_path() . PATH_SEPARATOR . 'ExcelRes/');
include 'PHPExcel/IOFactory.php';

$inputFileType = 'Excel5'; 
$inputFileName = 'import.xls'; 

class chunkReadFilter implements PHPExcel_Reader_IReadFilter {
    private $_startRow = 0;
    private $_endRow = 0;

    public function setRows($startRow)  {
        $this->_startRow    = $startRow; 
    }

    public function readCell($column, $row, $worksheetName = '') { 
        if (($row == 1) || ($row >= $this->_startRow)) return true;
        return false;
    }
}

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

$chunkFilter = new chunkReadFilter();

$objReader->setReadFilter($chunkFilter);

$chunkFilter->setRows(22000); 
$objPHPExcel = $objReader->load($inputFileName);

echo $objPHPExcel->getActiveSheet()->getCell('K22000')->getValue();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jakulov
@jakulov
XMLReader должен помочь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы