Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur phpexcel dans le système Linux

Comment résoudre l'erreur phpexcel dans le système Linux

小云云
小云云original
2018-03-08 13:04:162158parcourir

Récemment, un projet tp3.2 a été migré vers le système Linux. Soudain, un jour, j'ai découvert que la fonction d'exportation Excel qui fonctionnait correctement sur Win Server 2008 ne pouvait pas être utilisée sur le nouveau système. L'erreur est signalée comme suit :

Comment résoudre lerreur phpexcel dans le système Linux On dit qu'il y a un problème avec la ligne 1762. Retrouvez le code de ce fichier et jetez un oeil :

/**
     * Get an instance of this class
     *
     * @access  public
     * @param   PHPExcel $workbook  Injected workbook for working with a PHPExcel object,
     *                                  or NULL to create a standalone claculation engine
     * @return PHPExcel_Calculation
     */
    public static function getInstance(PHPExcel $workbook = NULL) {
        if ($workbook !== NULL) {            if (isset(self::$_workbookSets[$workbook->getID()])) {                return self::$_workbookSets[$workbook->getID()];
            }            return new PHPExcel_Calculation($workbook);
        }        if (!isset(self::$_instance) || (self::$_instance === NULL)) {            self::$_instance = new PHPExcel_Calculation();
        }        return self::$_instance;
    }   //  function getInstance()

Cette fonction getInstance(PHPExcel $workbook = NULL)
J'ai découvert qu'il y avait un PHPExcel supplémentaire lorsque cette fonction a été définie. J'ai essayé de la supprimer, de la télécharger et de la tester, mais l'erreur a été signalée à nouveau :
Comment résoudre lerreur phpexcel dans le système LinuxCette fois, c'était la ligne 1721, puis j'ai retrouvé le fichier à cet emplacement. Supprimez les éléments PHPExcel, puis continuez à télécharger et à tester plus tard. PHPExcel lors de la définition de la fonction, mais les erreurs se succèdent. C'est le fichier qui doit être remplacé :

Comment résoudre lerreur phpexcel dans le système LinuxVous devez ajouter un espace ici pour qu'il n'y ait pas d'erreur de remplacement. , continuons le téléchargement et les tests.

Comment résoudre lerreur phpexcel dans le système LinuxPuis cela s'est produit... J'avais le cœur brisé à ce moment-là...
Continuez Trouvez le problème et affichez les variables dans le fichier php de test pour les tests.

PHPExcel\PHPExcel\Calculation\Functions.php  下面这个文件,中有个 **TYPE**函数,将其中的break去掉,上传,ok了/**
     * TYPE
     *
     * Returns a number that identifies the type of a value
     *
     * @param   value       The value you want tested
     * @return  number      N converts values listed in the following table
     *      If value is or refers to N returns
     *      A number            1
     *      Text                2
     *      Logical Value       4
     *      An error value      16
     *      Array or Matrix     64
     */
    public static function TYPE($value = NULL) {
        $value	= self::flattenArrayIndexed($value);        if (is_array($value) && (count($value) > 1)) {            $a = array_keys($value);            $a = array_pop($a);            //  Range of cells is an error
            if (self::isCellValue($a)) {                return 16;            //  Test for Matrix
            } elseif (self::isMatrixValue($a)) {                return 64;
            }
        } elseif(empty($value)) {            //  Empty Cell
            return 1;
        }        $value	= self::flattenSingleValue($value);        if (($value === NULL) || (is_float($value)) || (is_int($value))) {                return 1;
        } elseif(is_bool($value)) {                return 4;
        } elseif(is_array($value)) {                return 64;                break;
        } elseif(is_string($value)) {            //  Errors
            if ((strlen($value) > 0) && ($value{0} == '#')) {                return 16;
            }            return 2;
        }        return 0;
    }   //  function TYPE()
C'est le processus complet. Le système en ligne utilise centos7, et PHP est également 7. Ceci est probablement dû à une incompatibilité, et je ne l'ai pas étudié davantage. Après tout, il existe en fait un nouveau plug-in Excel. Sinon, il y a trop de codes à modifier, je suppose que je vais simplement changer le. plug-in.

Recommandations associées :


Partage de la méthode d'importation d'Excel depuis phpexcel dans TP3.2

PHP utilise PHPExcel pour créer des lots télécharger dans la base de données

Explication détaillée d'un exemple de thinkPHP+phpexcel réalisant la fonction de sortie de rapport Excel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn