低版本 PHPExcel中 在PHP7.0以下时运行不会报错,当切换PHP版本为PHP7.0以上时将会报错
'break' not in the 'loop' or 'switch' context
PHPExcel\Calculation\Functions.php LINE: 581
咱们看一下文件 Functions.php
if (($value === NULL) || (is_float($value)) || (is_int($value))) {
return 1;
} elseif(is_bool($value)) {
return 4;
} elseif(is_array($value)) {
return 64;
break;//这是581行
} elseif(is_string($value)) {
// Errors
if ((strlen($value) > 0) && ($value{0} == '#')) {
return 16;
}
return 2;
}
可以发现 return 跳出当前函数或者循环直接返回 break 并会执行而报错
方案1:将581行的break注释掉
方案2 : 将PHPExcel升级到1.81版本以上
方案三: 使用PHPExcel的升级产品PhpSpreadsheet
方案1修改源码 不推荐
方案2PHPExcel已不再维护 故不推荐
对于框架版本国过老 或经多手的项目 建议使用 方案1,2
方案3为PHPExcel的替代品升级产品 而且在维护 新项目推荐方案3
PhpSpreadsheet安装 如下
composer安装:composer require phpoffice/phpspreadsheet
PHPExcel与PhpSpreadsheet?
PhpSpreadsheet是PHPExcel的下一个版本。它打破了兼容性,大大提高了代码库质量(命名空间,PSR合规性,最新PHP语言功能的使用等)。
因为所有的努力都转移到了PhpSpreadsheet,所以不再维护PHPExcel。PHPExcel,补丁和新功能的所有贡献都应该以PhpSpreadsheet master分支为目标。
PhpSpreadsheet怎么使用 这里就不赘述了
本作品采用《CC 协议》,转载必须注明作者和本文链接