为什么我无法访问PHPExcel中的setReadDataOnly()或enableMemoryOptimization()?

时间:2010-12-28 10:49:54

标签: php phpexcel

我已下载PHPExcel 1.7.5 Production

我想将 setReadDataOnly() enableMemoryOptimization()用作discussed in their forum herestackoverflow questions

但是当我使用它们时,我收到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 个答案:

答案 0 :(得分:3)

您已经确定了为什么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);

修改

您在问题中链接到的enableMemoryOptimization()上的线程来自一个用户,他希望以一种破坏大部分类功能的方式构建PHPExcel,同时提高其特定用例的性能(代价是大多数其他用户);哪个会导致两个不兼容的方法来操纵库中的数据。因此,我拒绝了它。

答案 1 :(得分:0)

好吧,这只是一个语法问题,你必须做一个读者,例如:

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