第一步:
前端代码:(注意事项:前端请使用a标签导出,这里的坑是:不能使用ajax去做请求,否则会出现莫名其妙的错误)
<a style="color:white;display:;margin-bottom: 20px;margin-left: 30px;width: 200px" class="btn btn-primary "
href="<?= $urlManager->createUrl(['mch/user/export-vip-card', 'id'=>$card_id]) ?>"> 导出兑换码
</a>
第二步:
后端代码:(Yii后台,注意事项:PHPExcel这个类库文件放在vendor目录下即可)
use PHPExcel;
use PHPExcel_IOFactory;
use PHPExcel_Style_Alignment;
/**
* 导出功能
* @param $id
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
public function actionExportVipCard($id){
$data = UserCardvipList::find()->where(['redeem_code_id'=>$id])->asArray()->all();
$fields=array('序号','兑换码','绑定人','绑定时间','使用状态','所属分类','使用时长');
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$cols = array('A', 'B', 'C', 'D','E','F','G','H','I','J','K','L');
$row = 1;
foreach($fields as $k=>$v){
$objPHPExcel->getActiveSheet()->setCellValue($cols[$k].$row,$fields[$k]);
$objPHPExcel->getActiveSheet()->getStyle($cols[$k].$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle($cols[$k].$row)->getFont()->setBold(true);//加粗
$objPHPExcel->getActiveSheet()->getColumnDimension($cols[$k])->setWidth(30);
}
foreach($data as $k=>$val) {
$row = $row + 1;
$key = 0;
$objPHPExcel->getActiveSheet()->setCellValue(A.$row,$k+1);
$objPHPExcel->getActiveSheet()->getStyle(A.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$key = $key + 1;
$objPHPExcel->getActiveSheet()->setCellValue(B.$row,$val['redeem_code']);
$objPHPExcel->getActiveSheet()->getStyle(B.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$key = $key + 1;
$objPHPExcel->getActiveSheet()->setCellValue(C.$row, $val['username']);
$objPHPExcel->getActiveSheet()->getStyle(C.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$key = $key + 1;
$objPHPExcel->getActiveSheet()->setCellValue(D.$row, $val['bindingtime']);
$objPHPExcel->getActiveSheet()->getStyle(D.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$key = $key + 1;
$objPHPExcel->getActiveSheet()->setCellValue(E.$row, $val['status']);
$objPHPExcel->getActiveSheet()->getStyle(E.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$key = $key + 1;
$objPHPExcel->getActiveSheet()->setCellValue(F.$row, $val['redeem_code_id']);
$objPHPExcel->getActiveSheet()->getStyle(F.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$key = $key + 1;
$objPHPExcel->getActiveSheet()->setCellValue(G.$row, $val['usetime']);
$objPHPExcel->getActiveSheet()->getStyle(G.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
$excel_date = date('Y-m-d-', time());
$objPHPExcel->getActiveSheet()->setTitle($excel_date.'兑换码');
header("Pragma: public");
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-excel');
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="'.$excel_date.'兑换码.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
希望各位小伙伴能迅速玩转PHP的导出。如果觉得以上代码有用,请记得点赞哦!