최근 tp3.2 프로젝트가 Linux 시스템으로 마이그레이션되었습니다. 어느 날 갑자기 Win Server 2008에서 원래 잘 돌아가던 Excel 내보내기 기능을 새 시스템에서는 사용할 수 없다는 사실을 발견했습니다. 오류 내용은 다음과 같습니다.
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이 있습니다. 삭제하고 업로드하고 테스트했는데 또 다른 오류가 발생했습니다.
이번에는 1721번째 줄입니다. 그런 다음 이 위치에서 파일을 다시 찾아 PHPExcel을 삭제합니다. 그런 다음 계속해서 업로드하고 테스트해 보세요. 나중에 대부분의 오류는 다음과 같습니다. 삭제하세요. 함수를 정의할 때 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()이것은 완전한 프로세스입니다. 온라인 시스템은 centos7을 사용하고 PHP도 7입니다. 이는 아마도 호환성 문제 때문일 것이며, 더 이상 연구하지 않았습니다. 결국 새로운 Excel 플러그인이 있는 것입니다. 그렇지 않은 경우 수정해야 할 코드가 너무 많아서 그냥 변경하면 될 것 같습니다. 플러그인.
TP3.2의 phpexcel에서 Excel을 가져오는 방법 공유
PHP는 PHPExcel을 사용하여 데이터베이스에 일괄 업로드합니다
thinkPHP+phpexcel은 Excel 보고서 출력 기능의 자세한 예를 구현합니다
위 내용은 Linux 시스템에서 phpexcel 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!