尝试访问 int 类型值的数组偏移量 { DefaultValueBinder.php line 82 }

问题描述 投票:0回答:4

我有一个导出到 Excel 按钮,可以下载 Excel 文件。 但是,当我单击时,它显示错误为 尝试访问 int 类型值的数组偏移量

我的代码是这样的:

public static function dataTypeForValue($pValue = null)
    {
        // Match the value against a few data types
        if ($pValue === null) {
            return PHPExcel_Cell_DataType::TYPE_NULL;
        } elseif ($pValue === '') {
            return PHPExcel_Cell_DataType::TYPE_STRING;
        } elseif ($pValue instanceof PHPExcel_RichText) {
            return PHPExcel_Cell_DataType::TYPE_INLINE;
  } elseif ($pValue[0] === '=' && strlen($pValue) > 1) {   //error comes in this line
            return PHPExcel_Cell_DataType::TYPE_FORMULA;
        } elseif (is_bool($pValue)) {
            return PHPExcel_Cell_DataType::TYPE_BOOL;
        } elseif (is_float($pValue) || is_int($pValue)) {
            return PHPExcel_Cell_DataType::TYPE_NUMERIC;
        } elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) {
            $tValue = ltrim($pValue, '+-');
            if (is_string($pValue) && $tValue[0] === '0' && strlen($tValue) > 1 && $tValue[1] !== '.') {
                return PHPExcel_Cell_DataType::TYPE_STRING;
            } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) {
                return PHPExcel_Cell_DataType::TYPE_STRING;
            }
            return PHPExcel_Cell_DataType::TYPE_NUMERIC;
        } elseif (is_string($pValue) && array_key_exists($pValue, PHPExcel_Cell_DataType::getErrorCodes())) {
            return PHPExcel_Cell_DataType::TYPE_ERROR;
        }

        return PHPExcel_Cell_DataType::TYPE_STRING;
    }
}

这个问题有什么解决办法..?

php excel laravel export-to-excel
4个回答
62
投票

在 PHPExcel 文件“DefaultValueBinder.php”中,替换第 82 行:

} elseif ($pValue[0] === '=' && strlen($pValue) > 1) {

具有以下内容:

} elseif (0 === strpos($pValue, '=') && strlen($pValue) > 1) {

4
投票

(!is_int($pValue) && $pValue[0] === '=' && strlen($pValue) > 1)
应该可以。
$pValue[0]
不适用于整数,因此在继续之前请检查它是否是 int。


3
投票

我更新了库中的一些文件,它在 php 7.4 上对我来说工作得很好 请检查更新的代码库:

Google 云端硬盘链接


0
投票

除了 Vivek Raskar 和 Serhii Matrunchyk 所说的之外,

该文件的位置是 /供应商/PHPOffice/PHPExcel/Classes/PHPExcel/Cell/DefaultValueBinder.php

© www.soinside.com 2019 - 2024. All rights reserved.