为什么我不能在PHPExcel中访问setReadDataOnly()或enableMemoryOptimization()?

我已经下载了PHPExcel 1.7.5 Production.

我想将setReadDataOnly()和enableMemoryOptimization()用作discussed in their forum here* questions.

但是,当我使用它们时,会收到未定义方法的调用错误.

我还没有安装其他版本或某些插件或库吗?
我必须怎么做才能访问这些方法?

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

解决方法:

您已经确定了setReadDataOnly()无法正常工作的原因.

对于PHPExcel中的任何类,enableMemoryOptimization()都不是有效的方法.如果要优化内存,请在加载任何文件或实例化新的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中的用户,这种方式破坏了该类的大多数功能,同时提高了其特定用例的性能(以大多数其他用户为代价) );这会导致两种不兼容的方法来处理库中的数据.因此,我拒绝了.

上一篇:Thinkphp解决phpExcel导出数据量大导致内存溢出


下一篇:phpExcel无法处理工作表v2.1