從昨天中午一直在研究如何在Tp5中引入Phpexcel组题,在網(wǎng)上搜索了很多資料,發(fā)現(xiàn)目前引入Phpexcel總的來說是兩種
1.利用composer
? ? ? 這種方法很麻煩错蝴,要安裝先安裝composer,然后還要上官網(wǎng)下載composer.phar文件幽邓,然后還要創(chuàng)建bat文件娶吞,最后,等你成功安裝composer后牵寺,使用composer require phpoffice/phpexcel悍引,它顯示失敗,然后吧帽氓,我執(zhí)行命令趣斤,composer update讓它更新一下,之后又執(zhí)行composer require phpoffice/phpexcel黎休,終于看見i.nstall phpexcel,突然又彈出對話框 php cli停止工作浓领。oh no 崩潰感覺有沒有~~~~~無數(shù)烏鴉在頭上飄玉凯。
2.另外一種就是我接下來要講的從網(wǎng)上下載Phpexcel文件夾,把里面的classes??文件夾重命名為 Phpexcel联贩,然后把該文件夾放入項目根目錄的extend內(nèi)漫仆。
在控制器中的代碼是:
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);//設置活動單指數(shù)到第一個表,所以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();
}
最后效果