3

我已经下载了 PHPExcel 1.7.5 Production

我想使用setReadDataOnly()enableMemoryOptimization(),正如他们在此处的论坛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
4

2 回答 2

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 中,这种方式破坏了类的大部分功能,同时提高了他的特定用例的性能(以大多数其他用户为代价) ); 这将导致在库中操作数据的两种不兼容的方法。因此,我拒绝了它。

于 2010-12-28T12:19:47.753 回答
0

好的,这只是一个语法问题,你必须做一个阅读器,例如:

$reader = PHPExcel_IOFactory::createReaderForFile("data/".$file_name);
$reader->setReadDataOnly(true);
//$reader->enableMemoryOptimization(); //Call to undefined method
$objPHPExcel = $reader->load("data/".$file_name);
于 2010-12-28T10:57:45.750 回答