>백엔드 개발 >PHP 튜토리얼 >Linux 시스템에서 phpexcel 오류를 해결하는 방법

Linux 시스템에서 phpexcel 오류를 해결하는 방법

小云云
小云云원래의
2018-03-08 13:04:162278검색

최근 tp3.2 프로젝트가 Linux 시스템으로 마이그레이션되었습니다. 어느 날 갑자기 Win Server 2008에서 원래 잘 돌아가던 Excel 내보내기 기능을 새 시스템에서는 사용할 수 없다는 사실을 발견했습니다. 오류 내용은 다음과 같습니다.

Linux 시스템에서 phpexcel 오류를 해결하는 방법 1762번째 줄에 문제가 있다고 합니다. 이 파일의 코드를 찾아서 살펴보세요.

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

이 함수 getInstance(PHPExcel $workbook = NULL)
찾아보니 이 함수를 정의할 때 추가 PHPExcel이 있습니다. 삭제하고 업로드하고 테스트했는데 또 다른 오류가 발생했습니다.
Linux 시스템에서 phpexcel 오류를 해결하는 방법
이번에는 1721번째 줄입니다. 그런 다음 이 위치에서 파일을 다시 찾아 PHPExcel을 삭제합니다. 그런 다음 계속해서 업로드하고 테스트해 보세요. 나중에 대부분의 오류는 다음과 같습니다. 삭제하세요. 함수를 정의할 때 PHPExcel을 삭제하면 되지만 오류가 차례로 발생합니다. 교체해야 할 파일은 다음과 같습니다.
Linux 시스템에서 phpexcel 오류를 해결하는 방법
오류가 대체되지 않도록 여기에 공백을 추가하십시오. 자, 테스트를 위해 계속 업로드하십시오. 테스트용 테스트 php 파일입니다.

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()
Linux 시스템에서 phpexcel 오류를 해결하는 방법이것은 완전한 프로세스입니다. 온라인 시스템은 centos7을 사용하고 PHP도 7입니다. 이는 아마도 호환성 문제 때문일 것이며, 더 이상 연구하지 않았습니다. 결국 새로운 Excel 플러그인이 있는 것입니다. 그렇지 않은 경우 수정해야 할 코드가 너무 많아서 그냥 변경하면 될 것 같습니다. 플러그인.

관련 권장 사항:

TP3.2의 phpexcel에서 Excel을 가져오는 방법 공유

PHP는 PHPExcel을 사용하여 데이터베이스에 일괄 업로드합니다

thinkPHP+phpexcel은 Excel 보고서 출력 기능의 자세한 예를 구현합니다

위 내용은 Linux 시스템에서 phpexcel 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.