【问题标题】:PHPExcel cache errorPHPExcel缓存错误
【发布时间】:2014-03-03 15:55:11
【问题描述】:

当我启用缓存选项以提高内存使用率时:

$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

有没有办法修复这个错误?

【问题讨论】:

  • 假设您使用的是 1.7.9 版本;这是否仍然是新版本 1.8.0 的问题,该版本修复了 xlsx 阅读器的一些 SimpleXMLElement 问题
  • @MarkBaker 是的,升级到 1.8.0 我得到了同样的信息。
  • 您能否提供一个演示此问题的示例电子表格文件,或说明用于创建该文件的应用程序和版本
  • @MarkBaker 我无法为您提供示例电子表格,因为它是机密的,但该文件是在 Excel 2007 中创建的,它是一个 xlsx 文件。
  • 遗憾的是,它根本没有缩小范围,因为我测试了数百个 xlsx 文件;但您确定它是使用 MS Excel 2007 版创建的(不仅仅是因为文件扩展名?)

标签: php phpexcel spreadsheet phpexcelreader


【解决方案1】:

我也有同样的问题。我的文件也是机密的:/。 但是我在 MemoryGZip.php 中发现了这一行之前

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

$this->_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)
    )

)

该列其他单元格相同公式,处理没有问题的,没有这个块

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

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

希望这将有助于识别问题。 PS Mark,谢谢你的 PHPExcel。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2014-09-26
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多