一、
1.引入PHPExcel.php類
2.下面的代碼可以直接拿來用,此例中$list為前端傳過來的json數據
public function excel()
{
$pre_list = input('list');
$list = json_decode($pre_list);
//創建對象
$excel = new \PHPExcel();
$excel->getActiveSheet()->getDefaultColumnDimension()->setAutoSize(true);//設置單元格寬度
//設置表格的寬度 手動
$excel->getActiveSheet()->getColumnDimension('A')->setWidth(30);
$excel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$excel->getActiveSheet()->getColumnDimension('C')->setWidth(45);
$excel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$excel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('J')->setWidth(70);
$excel->getActiveSheet()->getColumnDimension('K')->setWidth(15);
//表頭數組
$rowVal = array(0=>'訂單編號', 1=>'店鋪名稱',2=>'商品名稱', 3=>'買家', 4=>'下單時間', 5=>'訂單總額',6=>'訂單狀態',7=>'收貨人',8=>'收貨人電話',9=>'收貨人地址',10=>'支付方式');
foreach ($rowVal as $k=>$r){
$excel->getActiveSheet()->getStyleByColumnAndRow($k,1)->getFont()->setBold(true);//字體加粗
$excel->getActiveSheet()->getStyleByColumnAndRow($k,1)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//文字居中
$excel->getActiveSheet()->setCellValueByColumnAndRow($k,1,$r);
}
//表格數組
foreach($list as $k => $v)
{
$num=$k+2;
$goods_name = '';
foreach($v->order_item_list as $key => $val){
$goods_name = $goods_name.' '.$val->goods_name;
}
$excel->setActiveSheetIndex(0)
->setCellValue('A'.$num, $v->order_no)
->setCellValue('B'.$num, $v->shop_name)
->setCellValue('c'.$num, $goods_name)
->setCellValue('D'.$num, $v->user_name)
->setCellValue('E'.$num, $v->shipping_time)
->setCellValue('F'.$num, $v->pay_money)
->setCellValue('G'.$num, $v->status_name)
->setCellValue('H'.$num, $v->receiver_name)
->setCellValue('I'.$num, $v->receiver_mobile)
->setCellValue('J'.$num, $v->receiver_province_name.' '.$v->receiver_city_name.' '.$v->receiver_district_name.' '.$v->receiver_address)
->setCellValue('K'.$num, $v->pay_type_name);
$excel->getActiveSheet()->getStyleByColumnAndRow($k,1)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//文字居中
}
$write = new \PHPExcel_Writer_Excel5($excel);
//創建Excel輸入對象
ob_clean(); //清除緩沖區
Header('content-Type:application/vnd.ms-excel;charset=utf-8');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="訂單匯總表(' . date('Ymd-His') . ').xls"');
header('Cache-Control: max-age=0');
$write->save('php://output');
}
二、通用導出模板
1.
/*
* @name 通用導出
* @params title 表格名稱
* @param tit 標題數組
* @param con 數據
* @param key 數據 對應標題的鍵值數組
* @param sizes 需要加寬的列
* */
function excel($title='', $tit=[], $con=[], $key=[], $sizes=[])
{
include_once(Env::get('root_path').'vendor/PHPExcel/PHPExcel.php');
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getProperties()->setCreator("ctos")
->setLastModifiedBy("ctos")
->setTitle($title)
->setSubject($title)
->setDescription($title)
->setKeywords($title)
->setCategory($title);
$letter = array(
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T'
);
foreach ($sizes as $size){
$objPHPExcel->getActiveSheet(0)->getColumnDimension($size)->setAutoSize(true);
}
foreach ($tit as $k => $v)
{
$objPHPExcel->getActiveSheet()->setCellValue($letter[$k] . "1", $v);
}
foreach ($con as $k => $v)
{
foreach ($key as $k2 => $v2)
{
$objPHPExcel->getActiveSheet()->setCellValue($letter[$k2] . ($k + 2), $v[$v2]);
}
}
// excel頭參數
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=\"$title.xls\"");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel5為xls格式,excel2007為xlsx格式
$objWriter->save('php://output');
die();
}
2.調用($list為導出的列表)
public function export($list){
$table_name = '投訴信息表('.date('Ymd-His').')';
$tit = array(
"編號ID",
"用戶",
"性別"
);
$key = array(
"id",
"name",
"sex"
);
$size = ['C'];
$this->excel($table_name, $tit, $lists, $key, $size);
}