本次是進行execl導出實例的講解,
1、首先下載PHPExcel擴展類 (可以百度 沒有的找我要[email protected])
2、在ThinkPHP引入PHPExcel 那麼我是放到了Vendor中
3、然後就可以開心的去寫控制器方法了
注意要這樣寫去引用哦 $excel = new \PHPExcel();
因爲我是導出excel 先保存到服務器然後再將導出的文件和其他文件一起進行壓縮後下載的(文件合併壓縮後續我會再寫文檔介紹) 所以這段代碼最後ajax返回的操作可以不用管
如果大家想直接導出後就下載 可以參考最後註釋的幾行
/**
* 真正的導出
* @param array $complain_info 投訴信息結構體
* $is_download_mv 是否下載視頻
* @return [type] [description]
*/
public function export_complain($complain_info,$is_download_mv)
{
Vendor('PHPExcel.PHPExcel','','.class.php');
//創建對象
$excel = new \PHPExcel();
$excel->getActiveSheet()->setTitle('投訴列表');
// 設置單元格高度
// 所有單元格默認高度
$excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25);
// 第一行的默認高度
$excel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
// 垂直居中
$excel->getActiveSheet()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
// 設置水平居中
$excel->getActiveSheet()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//Excel表格式
$letter = array('A','B','C','D','E','F','F','G','H','I','J','K','L');
//表頭數組
$tableheader = array('序號','車牌號','車牌顏色','投訴說明','投訴地點','投訴人','投訴時間','投訴人手機號','投訴人微信號','微信暱稱','狀態','進展','獎勵');
$tablestyle = array(
array('width'=>'5'),
array('width'=>'15'),
array('width'=>'10'),
array('width'=>'40'),
array('width'=>'30'),
array('width'=>'10'),
array('width'=>'15'),
array('width'=>'15'),
array('width'=>'15'),
array('width'=>'15'),
array('width'=>'10'),
array('width'=>'10'),
array('width'=>'10'),
);
// 如果選擇視頻下載
if($is_download_mv){
$letter[] = 'M';
$tableheader[] = '視頻地址(相對路徑)';
$tablestyle[] = array('width'=>'30');
}
// id , plate_num,color,msg,place,name,time,phone,weixin,wx_name,status,process
//填充表頭信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
$excel->getActiveSheet()->getColumnDimension($letter[$i])->setWidth($tablestyle[$i]['width']);
}
//填充表格信息
for ($i = 2;$i <= count($complain_info) + 1;$i++) {
$data = $complain_info[$i - 2];
if($is_download_mv){
$this->mv_arr[] = $data['vedio'];
$tmp = explode('/',$data['vedio']);
$tmpurl = array_pop($tmp);
$excel->getActiveSheet()->setCellValue("$letter[13]$i","{$tmpurl}");
}
$excel->getActiveSheet()->setCellValue("$letter[0]$i","{$data['id']}");
$excel->getActiveSheet()->setCellValue("$letter[1]$i","{$data['plate_num']}");
$excel->getActiveSheet()->setCellValue("$letter[2]$i","{$data['color_str']}");
$excel->getActiveSheet()->setCellValue("$letter[3]$i","{$data['msg']}");
$excel->getActiveSheet()->setCellValue("$letter[4]$i","{$data['place']}");
$excel->getActiveSheet()->setCellValue("$letter[5]$i","{$data['name']}");
$excel->getActiveSheet()->setCellValue("$letter[6]$i","{$data['time']}");
$excel->getActiveSheet()->setCellValue("$letter[7]$i","{$data['phone']}");
$excel->getActiveSheet()->setCellValue("$letter[8]$i","{$data['weixin']}");
$excel->getActiveSheet()->setCellValue("$letter[9]$i","{$data['wx_name']}");
$excel->getActiveSheet()->setCellValue("$letter[10]$i","{$data['status_str']}");
$excel->getActiveSheet()->setCellValue("$letter[11]$i","{$data['process_str']}");
$excel->getActiveSheet()->setCellValue("$letter[12]$i","{$data['gift_send_str']}");
}
//創建Excel輸入對象
$write = new \PHPExcel_Writer_Excel5($excel);
$filename = $this->execl_url.'/report_list_'.date("Y-m-d-H.i.s").'.xls';
$write->save($filename);
// 進行下一步文件壓縮
if($is_download_mv){
$this->mv_arr[] = $filename;
$this->filezip();
}else{
$result['code'] =200;
$result['filename'] =$filename;
$this->ajaxReturn($result);
return true;
}
echo 0;
// 直接下載的代碼
// header("Pragma: public");
// header("Expires: 0");
// header("Expires: 0");
// header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
// header("Content-Type:application/force-download");
// header("Content-Type:application/vnd.ms-execl");
// header("Content-Type:application/octet-stream");
// header("Content-Type:application/download");;
// header('Content-Disposition:attachment;filename="客棧信息.xls"');
// header("Content-Transfer-Encoding:binary");
// $write->save('php://output');
}
導出後直接下載代碼
//創建Excel輸入對象
$write = new \PHPExcel_Writer_Excel5($excel);
$write->save($filename);
// 直接下載的代碼
header("Pragma: public");
header("Expires: 0");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename="客棧信息.xls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');