2014-03-03 150 views
1

当我启用缓存选项以提高内存的使用情况:PHPExcel高速缓存错误

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp; 
$cacheSettings = array('memoryCacheSize' => '32MB'); 
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); 

我得到一个致命的错误:

Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' in /Applications/MAMP/htdocs/XXXX/Classes/PHPExcel/CachedObjectStorage/PHPTemp.php:65 Stack trace: #0 /Applications/MAMP/htdocs/XXXX/Classes/PHPExcel/CachedObjectStorage/PHPTemp.php(65): serialize(Object(PHPExcel_Cell)) #1 /Applications/MAMP/htdocs/XXXX/Classes/PHPExcel/CachedObjectStorage/PHPTemp.php(85): PHPExcel_CachedObjectStorage_PHPTemp->_storeData() #2 /Applications/MAMP/htdocs/XXXX/Classes/PHPExcel/Worksheet.php(1136): PHPExcel_CachedObjectStorage_PHPTemp->addCacheData('BN21', Object(PHPExcel_Cell)) #3 /Applications/MAMP/htdocs/XXXX/Classes/PHPExcel/Reader/Excel2007.php(881): PHPExcel_Worksheet->getCell('BN21') #4 /Applications/MAMP/htdocs/XXXX/engine.php(85): PHPExcel_Reader_Excel2007->load('XXXX.xlsx') #5 {main} thrown in /Applications/MAMP/htdocs/XXXX/Classes/PHPExcel/CachedObjectStorage/PHPTemp.php on line 65 

有没有办法解决这个问题?

+0

假设您使用的是1.7.9版;这是新版本1.8.0还是一个问题,它解决了xlsx阅读器的一些SimpleXMLElement问题 –

+0

@MarkBaker是的,升级到1.8.0并且我得到了相同的消息。 – xmarston

+0

您能否提供一个演示此问题的示例电子表格文件,或者指出使用什么应用程序和版本来创建文件 –

回答

0

我有同样的问题。我的文件也是保密的:/。 > _ currentObject是

PHPExcel_Cell Object 
(
[_value:PHPExcel_Cell:private] => =J4=SUM(K4:Q4) 
[_calculatedValue:PHPExcel_Cell:private] => 1 
[_dataType:PHPExcel_Cell:private] => f 
[_parent:PHPExcel_Cell:private] => 
[_xfIndex:PHPExcel_Cell:private] => 5 
[_formulaAttributes:PHPExcel_Cell:private] => SimpleXMLElement Object 
    (
     [@attributes] => Array 
      (
       [t] => shared 
       [ref] => U4:U15 
       [si] => 1 
      ) 

     [0] => J4=SUM(K4:Q4) 
    ) 

) 

此柱,用相同的公式,这是没有处理的其他细胞 - 但我在MemoryGZip.php已经发现,这条线之前

$this->_cellCache[$this->_currentObjectID] = gzdeflate(serialize($this->_currentObject)); 

的$该值问题,有没有这个块

[_formulaAttributes:PHPExcel_Cell:private] => SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [t] => shared 
      [ref] => U4:U15 
      [si] => 1 
     ) 

    [0] => J4=SUM(K4:Q4) 
) 

希望这将有助于发现问题。 PS标记,谢谢你的PHPExcel。