Home  >  Article  >  Backend Development  >  How to solve phpexcel error in Linux system

How to solve phpexcel error in Linux system

小云云
小云云Original
2018-03-08 13:04:162101browse

Recently, a tp3.2 project was migrated to the Linux system. Suddenly one day I found that the excel export function that originally ran fine on win server 2008 could not be used on the new system. The error is as follows:

How to solve phpexcel error in Linux system It is said that there is a problem with line 1762. Find the code of this file and take a look:

/**
     * 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()

This function getInstance(PHPExcel $workbook = NULL)
I found that there was an extra PHPExcel when this function was defined. I tried to delete it, upload it, and test it, but the error was reported again:
How to solve phpexcel error in Linux system
This time it was line 1721, and then I found the file at this location again and deleted PHPExcel. This stuff, then continue to upload and test, most of the errors later are like this, just delete the PHPExcel when the function is defined, but the errors come one after another, this is the file that needs to be replaced:
How to solve phpexcel error in Linux system
You need to add a space in this place so that there will be no replacement errors. Okay, continue to upload and test.
How to solve phpexcel error in Linux system
Then this happened... I was heartbroken at the time...
Continue to look for problems Well, output the variables in the test php file for testing.

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()

This is the complete process. The online system uses centos7, and PHP is also 7. This is probably caused by incompatibility, and I didn't study it further. After all, there is actually a new excel plug-in. If not, there are too many codes that need to be modified, I guess I will just change the plug-in.

Related recommendations:

Sharing the method of importing excel from phpexcel in TP3.2

##PHP uses PHPExcel to batch upload to the database

thinkPHP+phpexcel implementation of excel report output function example detailed explanation

The above is the detailed content of How to solve phpexcel error in Linux system. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn