ホームページ  >  記事  >  バックエンド開発  >  Linuxシステムでphpexcelエラーを解決する方法

Linuxシステムでphpexcelエラーを解決する方法

小云云
小云云オリジナル
2018-03-08 13:04:162218ブラウズ

最近、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エラーを解決する方法
。エラーが置き換えられないように、この場所にスペースを追加します。よし、テストのためにアップロードを続けます。
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()

オンラインシステムはcentos7を使用しており、PHPも7です。これはおそらく非互換性が原因であり、それ以上は調べませんでしたが、実際には新しい Excel プラグインが存在するため、変更する必要があるコードが多すぎると思います。プラグイン。

関連する推奨事項:

TP3.2でphpexcelからExcelをインポートする方法を共有

PHPはPHPExcelを使用してデータベースに一括アップロード

thinkPHP+phpexcelはExcelレポート出力機能を実装する詳細な例

以上がLinuxシステムでphpexcelエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。