最近再给客户搭建crmeb电商小程序管理系统的时候,发现crmeb V3版的顶到导出功能无法使用,提示“连接永久转移”。
于是就一步一步的打印断点,找出问题所在,终于最后在程序执行导出数据之前,出现错误,具体文件为:app/admin/model/order/StoreOrder.php 的SaveExcel 方法中的如下代码:
PHPExcelService::setExcelHeader(['订单号','收货人姓名','收货人手机','收件人电话','收货地址','商品信息','...'])
这句呢意思就是用 PHPExcel 扩展将数据导出到文件,里面的数组是 EXCEL 的表头信息。
这样看的话就是PHPExcel 本身的问题了,上网上查了一下,最终问题解决。
具体原因是crmebV3版最新的安装对环境要求是PHP7.2,但是PHPExcel 使用的是最新的1.8版本的,但是这个版本作者已经不维护了,推荐使用PhpSpreadsheet。
既然找到问题了,那我们就来解决一下,具体如下:
修改 vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/OLE.php 第288行使用 continue,PHP7不支持,修改为continue 2即可,如下:
switch($type){caseself::OLE_PPS_TYPE_ROOT:$pps=newPHPExcel_Shared_OLE_PPS_Root(null,null,array());$this->root=$pps;break;caseself::OLE_PPS_TYPE_DIR:$pps=newPHPExcel_Shared_OLE_PPS(null,null,null,null,null,null,null,null,null,array());break;caseself::OLE_PPS_TYPE_FILE:$pps=newPHPExcel_Shared_OLE_PPS_File($name);break;default:continue2;//修改这里}
然后修改:crmeb/services/PHPExcelService.php 第 130 行:
$objWriter=\PHPExcel_IOFactory::createWriter(self::$PHPExcel,'Excel2017');
为:
$objWriter=\PHPExcel_IOFactory::createWriter(self::$PHPExcel,'Excel5');
这样问题就解决了。测试一下,导出是不是很好用呢~~
总结
这个主要是THINKPHP 扩展 PHPEXCEL 与 PHP7.2等高版本兼容问题,但是crmeb官网最这个问题还是没有解决,讨论论坛也没有一个非常具体的解决方法,这里给补上。
产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;
日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉;
本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;
部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入;
如若转载,请注明出处:http://www.chanpinyuan.cn/43018.html;