PHPExcel 内存问题 - 还有更多想法吗?

标签 php zend-framework

我正在尝试使用 Zend Framework 和 PHPExcel 编写 Excel2007 文件。我知道我可以增加 PHP 内存限制.. 但没有其他办法吗?

到目前为止,这是我的代码,它适用于 5000 行和 77 列,但我需要 12000 行:-)内存设置为 128MB

    $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite;
    PHPExcel_Settings::setCacheStorageMethod($cacheMethod);

    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
    $phpExcel = new PHPExcel();

    // set headers
    $select = $db->select();
    $select->from('IMPORT')->limit(1);
    $data = $select->query()->fetchAll();
    $columns = array_keys($data[0]);
    $phpExcel->setActiveSheetIndex(0);
    $colCNT = 1;

    foreach ($columns as $column) {
        $letter = Nc_Utils::getNameFromNumber($colCNT);
        $phpExcel->getActiveSheet()->SetCellValue($letter . '1', $column);
        $colCNT++;
    }

    unset($select);
    unset($data);

    $sql = 'SELECT * FROM IMPORT LIMIT 7000';
    $stmt = $db->query($sql);

    $rowCNT = 2;
    while($rows = $stmt->fetch()){
        $phpExcel->getActiveSheet()->fromArray($rows, null, 'A'.$rowCNT);
        $rowCNT++;
    }  

    unset($rowCNT);
    unset($select);
    unset($db);

    // MEMORY USAGE = 4 MB!

    $phpExcelWrite = new PHPExcel_Writer_Excel2007($phpExcel);
    $phpExcelWrite->setUseDiskCaching(true);
    $phpExcelWrite->save(str_replace('.php', '.xls', __FILE__));

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 13878925 bytes) in /Applications/MAMP/htdocs/phpexcel/library/PHPExcel/Shared/XMLWriter.php on line 102

最佳答案

PHPExcel 网站 has a discussion关于减少内存消耗的可能方法:

关于PHPExcel 内存问题 - 还有更多想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251459/

相关文章:

php - 我可以显示用 PHP/GD 创建的图像而不保存并且不使用带有图像标题的外部 PHP 吗?

php - 如何巧妙处理 Artisan 命令中的异常

javascript - 由于 URL 意外,我收到 400 错误

php - 使用 ffmpeg 从视频中生成提取数量的缩略图

php - Zend Framework 2如何使用连接从多个表中获取列?

php - 如何自定义 Zend_Form 正则表达式错误消息?

php - Zend 两个提交按钮同名

php - 如何将 Swiftmailer 集成到 Angular2 中

php - 使用 Ajax 和 Jquery 设置 Iframe 目标?

php - 建模人员/公司角色