从昨天中午一直在研究如何在Tp5中引入Phpexcel,在网上搜索了很多资料,发现目前引入Phpexcel总的来说是两种
1.利用composer
这种方法很麻烦,要安装先安装composer,然后还要上官网下载composer.phar文件,然后还要创建bat文件,最后,等你成功安装composer后,使用composer require phpoffice/phpexcel,它显示失败,然后吧,我执行命令,composer update让它更新一下,之后又执行composer require phpoffice/phpexcel,终于看见i.nstall phpexcel,突然又弹出对话框 php cli停止工作。oh no 崩溃感觉有没有~~~~~无数乌鸦在头上飘。
2.另外一种就是我接下来要讲的从网上下载Phpexcel文件夹,把里面的classes 文件夹重命名为 Phpexcel,然后把该文件夹放入项目根目录的extend内。
在控制器中的代码是:
public functiontest(){
/**
* tp5使用excel导出
*@param
*@authorstaitc7 *@returnmixed
*/
$name='测试导出';
$header=['表头A','表头B'];
$data=[
['嘿嘿','heihei'],
['哈哈','haha']
];
excelExport($name,$header,$data);
}
在common.php下的代码是:
//注意\think\Request::instance()->time()不能单纯是 Request::instance()->time()
//要导入类,否则会出错,以为tp5强制使用命名空间think\Loader::import('PHPExcel.PHPExcel');
functionexcelExport($fileName='',$headArr= [],$data= []) {
$fileName.="_".date("Y_m_d", \think\Request::instance()->time()) .".xls";
\think\Loader::import('PHPExcel.PHPExcel');
$objPHPExcel=new\PHPExcel();
$objPHPExcel->getProperties();
$key=ord("A");//设置表头
foreach($headArras$v) {
$colum=chr($key);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
$key+=1;
}
$column=2;
$objActSheet=$objPHPExcel->getActiveSheet();
foreach($dataas$key=>$rows) {//行写入
$span=ord("A");
foreach($rowsas$keyName=>$value) {//列写入
$objActSheet->setCellValue(chr($span) .$column,$value);
$span++;
}
$column++;
}
$fileName=iconv("utf-8","gb2312",$fileName);//重命名表
$objPHPExcel->setActiveSheetIndex(0);//设置活动单指数到第一个表,所以Excel打开这是第一个表
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename='$fileName'");
header('Cache-Control: max-age=0');
$objWriter= \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
$objWriter->save('php://output');//文件通过浏览器下载
exit();
}
最后效果