Почему у меня нет доступа к setReadDataOnly () или enableMemoryOptimization () в PHPExcel? - PullRequest
3 голосов
/ 28 декабря 2010

Я скачал PHPExcel 1.7.5 Производство .

Я хотел бы использовать setReadDataOnly () и enableMemoryOptimization () как обсуждается на их форуме здесь и в вопросы stackoverflow .

Однако, когда я их использую, я получаю ошибку Call to undefined method.

Есть ли другая версия или какой-нибудь плагин или библиотека, которую я не установил?Что мне нужно сделать, чтобы получить доступ к этим методам?

$objPHPExcel = PHPExcel_IOFactory::load("data/".$file_name);
$objPHPExcel->setReadDataOnly(true); //Call to undefined method
$objPHPExcel->enableMemoryOptimization(); //Call to undefined method

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Вы уже определили, почему setReadDataOnly () не работает.

enableMemoryOptimization () не является допустимым методом для любого класса в PHPExcel. Если вы хотите оптимизировать память, вы включаете один из методов кэширования ячеек до загрузки любого файла или создания нового объекта PHPExcel.

$inputFileType = 'Excel2007';
$inputFileName = 'testBook.xlsx';

$r = PHPExcel_CachedObjectStorageFactory::initialize(PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp);
if (!$r) {
    die('Unable to set cell cacheing');
}

$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);

EDIT

Поток на enableMemoryOptimization (), на который вы ссылаетесь в своем вопросе, принадлежит пользователю, который хотел, чтобы это было встроено в PHPExcel таким образом, чтобы нарушить большинство функциональных возможностей класса, одновременно улучшая производительность для его конкретного варианта использования (за счет большинство других пользователей); и что привело бы к двум несовместимым методам для манипулирования данными в библиотеке. Таким образом, я отклонил это.

0 голосов
/ 28 декабря 2010

хорошо, это просто проблема синтаксиса, вы должны сделать читателя, например ::100100

$reader = PHPExcel_IOFactory::createReaderForFile("data/".$file_name);
$reader->setReadDataOnly(true);
//$reader->enableMemoryOptimization(); //Call to undefined method
$objPHPExcel = $reader->load("data/".$file_name);
...