2014-03-03 149 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。