我已下载PHPExcel 1.7.5 Production。
我想将 setReadDataOnly()和 enableMemoryOptimization()用作discussed in their forum here和stackoverflow 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
答案 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);