柔晶美网络工作室

柔晶美网络工作室,倾心于web技术的博客站点

关注我 微信公众号

您现在的位置是: 首页 > 博客日记

重构PHP通用查询系统之1----PHPExcel类在框架中如何调用?

2020-01-26 admin php  1450

原生PHP通用查询系统,可以直接require_once调用,代码如下:

//调用phpexcel
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
require_once 'PHPExcel/Reader/Excel5.php';
//实例化Excel读取类,并根据xls和xlsx选择不同读取类
$objReader = new PHPExcel_Reader_Excel2007();
    if(!$objReader->canRead($files)){
    $objReader = new PHPExcel_Reader_Excel5();
if(!$objReader->canRead($files)){
    echo '  警告:无法识别的Excel文件!';
    return false;
 }

然而,在框架中,无论是自动加载类方式,还是手动require_once,在new时都提示无法找到类。经查看,PHPExcel这个项目比较老了,不支持命名空间,而框架是使用命名空间的。如何解决呢?

经反复测试,可以在框架contorller中,先直接引入类。PHPExcel就放在contorller目录中,文件目录如下:

在控制器中,可以和原生的PH一样引入:

//调用phpexcel
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';

这时,new依然报错找不到类。关键在于new的方法,应该这样:

//实例化Excel读取类,并根据xls和xlsx选择不同读取类
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
    if(!$objReader->canRead($files)){
    $objReader = \PHPExcel_IOFactory::createReader('Excel5');
if(!$objReader->canRead($files)){
//无法识别的Excel文件
return false;
}
}

使用\PHPExcel_IOFactory::的方式才能正常调用。其它的类似,比如获取总列数,应该这样:

$zls = \PHPExcel_Cell::columnIndexFromString($zlszm);

通过这种方法,可以解决PHPExcel不支持命名空间的问题,使用完全正常。

文章评论


需要 登录 才能发表评论
热门评论
0条评论

暂时没有评论!