尝试访问类型为整数的值的数组偏移量 { DefaultValueBinder.php 82行 }

17

我有一个导出到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;
    }
}

有什么解决方案吗..?


1
这里的第82行是哪一行? - Kexus
3个回答

64
在PHPExcel文件的“DefaultValueBinder.php”中,将第82行替换为:
} elseif ($pValue[0] === '=' && strlen($pValue) > 1) {

如下所示:

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

这对我有用。谢谢。 - Juan Joya
非常好,谢谢。 - Claudio Martinez

4

(!is_int($pValue) && $pValue[0] === '=' && strlen($pValue) > 1)应该可行。在继续之前,请检查$pValue是否为int类型,因为$pValue[0]不能与整数一起使用。


很棒的开始 @Edvinas Platovas - Dilip Hirapara
$pValue 是一个字符串。 - Deb
根据你提供的信息和错误代码来看,$pValue 应该是一个整型。你从哪里获得这个值的? - Edvinas Platovas

3

我更新了一些库中的文件,并且它在php 7.4上运行良好。 请检查更新后的代码库:

谷歌云盘链接


你更新了哪些文件? - Ask17
如果你发现这个回答有帮助,请给我点赞。 - Govinda Yadav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接