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');
一次类推即可。
本文仅供初学者讨论学习,大牛请绕道,不喜勿喷,共建和谐社会!
