使用php处理一个巨大的excel文件

时间:2015-06-10 10:24:28

标签: php caching phpexcel

我正在处理一个包含5500行和50列的巨大excel文件, 处理只有100行需要超过一分钟才能显示,我无法处理整个文件我仍然等待超过6分钟没有任何结果, 我试图使用缓存的方法(我对这种方法没有很大的了解,你会在下面看到我的尝试)它与100行一起工作但当然在我第一次等待一分钟之后我得到了我的数据即时,alwyas我无法处理我的巨大文件。 这是我的尝试:

<?php
    require_once ".\Classes\PHPExcel\IOFactory.php";
    $objPHPExcel = PHPExcel_IOFactory::load("zfg01_CAT.xlsx");
    $sheet = $objPHPExcel->getSheet(0);
    include 'fonctionsUtiles.php';
    $cache = 'cache/index.html';
    $expire = time() - 3600; // valable une heure

    if (file_exists($cache) && filemtime($cache) > $expire) {
        readfile($cache);
    } else {
        ob_start(); // ouverture du tampon

        afficherUneFeuille($sheet);
        echo'<br>';
        echo $sheet->getHighestRow();
        echo'<br>';

        supprimerLesDoublons($sheet);
        afficherUneFeuille($sheet);
        echo $sheet->getHighestRow();
        echo'<br>';
        $page = ob_get_contents(); // copie du contenu du tampon dans une chaîne
        ob_end_clean(); // effacement du contenu du tampon et arrêt de son fonctionnement

        file_put_contents($cache, $page); // on écrit la chaîne précédemment récupérée ($page) dans un fichier ($cache) 
        echo $page; // on affiche notre page :D 
    }
    ?>

感谢您的帮助 抱歉我的英语不好^^

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Spout:https://github.com/box/spout。使用它非常简单,它支持非常大的文件,无需对php.ini和缓存技术进行任何更改。