您好,欢迎访问一九零五行业门户网

ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用有关问题解决

thinkphp 3.2 + phpexcel 导入导出文件 第三方类库不能用问题解决
thinkphp3.2 采用了namesapce,就是所谓的命名空间,会导致很多盆友放到/vendor下边导入文件的时候出现各种问题,鄙人百度了好多,但是好多都是老版本,最新版的thinkphp跟phpexcel一直没有解决,没有办法,只能看代码,终于,找到了这个问题的解决办法,在这里mark下,有需要的盆友可以看看。
把phpexcel加压之后的文件里边的classes的文件夹 phpexcel 跟 php文件 phpexcel.php 放到你\thinkphp\library\vendor 目录下,然后在controller中这样写:
导入代码实例:
public function importexcel(){
        vendor('phpexcel');
        $phpexcel = new \phpexcel();
        $savefile = '/mnt/www/tp/application/home/controller/test.xlsx';
$phpreader = new \phpexcel_reader_excel2007(); 
        if(!$phpreader->canread($savefile)){ 
            $phpreader = new \phpexcel_reader_excel5(); 
            if(!$phpreader->canread($savefile)){ 
                echo 'no excel'; 
                return ; 
            } 
        }
$phpexcel = $phpreader->load($savefile); 
        $currentsheet = $phpexcel->getsheet(0); 
        /**get max column*/ 
        $allcolumn = $currentsheet->gethighestcolumn(); 
        /**get max row*/ 
        $allrow = $currentsheet->gethighestrow();
        $return = array();
        $i=0;
        for($currentrow = 2;$currentrow
            for($currentcolumn= 'a';$currentcolumn
                $count = ord($currentcolumn) - 65;
                $val = $currentsheet->getcellbycolumnandrow($count,$currentrow)->getvalue();
            }
            $i++;
        }
}
导出实例代码:
public function exportexcel(){
        vendor('phpexcel');
        $objexcel = new \phpexcel();
        //set document property
        $objwriter = \phpexcel_iofactory::createwriter($objexcel, 'excel2007');
$objactsheet = $objexcel->getactivesheet();
        $key = ord(a);
$objactsheet->setcellvalue(a1, 'test1');
        $objactsheet->setcellvalue(a2, 'test2');
        $objactsheet->setcellvalue(b1, 'test3');
        $objactsheet->setcellvalue(b2, 'test4');
$outfile = test.xls;
//export to exploer
header(content-type: application/force-download);
        header(content-type: application/octet-stream);
        header(content-type: application/download);
        header('content-disposition:inline;filename='.$outfile.'');
        header(content-transfer-encoding: binary);
        header(cache-control: must-revalidate, post-check=0, pre-check=0);
        header(pragma: no-cache);
        $objwriter->save('php://output');
        exit;
    }
各位可以试下,反正我是测试过了,至于你们信不信,反正我是信啦。
ps:其实没啥,就是导入文件之后,所有的new 都加个\,你就成功了,原来生活如此简单哦也!
再ps:第三方类库(tp的命名方式是已.class.php结尾的,如果你的类库中不是已这种方式结尾),请放到think/library/vender中,然后使用vender()方式调用,比如你的vendor文件夹下有个phpexcel.php的文件,你只需要vendor('phpexcel');如果你的vendor文件夹下有个phpexcel的问价夹,里边test.php文件,你只需要vendor('phpexcel.test');
一次类推即可。
本文仅供初学者讨论学习,大牛请绕道,不喜勿喷,共建和谐社会!
其它类似信息

推荐信息