PHPExcel導出
方法一、
https://blog.csdn.net/u014236259/article/details/60601767
public function ExportExcelOrder($data, $name)
{
vendor('PHPExcel.PHPExcel'); //引入PHPExcel類
$objPHPExcel = new \PHPExcel(); //實例化 相當於在桌面新建一個excel
// 表頭
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'id')
->setCellValue('B1', '訂單編號')
->setCellValue('C1', '收貨人姓名')
->setCellValue('D1', '收貨人電話')
->setCellValue('E1', '地址')
->setCellValue('F1', '省份')
->setCellValue('G1', '返現金額')
->setCellValue('H1', '品牌名稱');
//設置內容水平居中
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 設置個表格寬度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(24);
//設置單元格自動寬度
$objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
// 內容
for ($i = 0, $len = count($data); $i < $len; $i++) {
$objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 2), $data[$i]['part_order_id']);
$objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 2), $data[$i]['order_id']);
$objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 2), $data[$i]['accept_name']);
$objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 2), $data[$i]['phone']);
$objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 2), $data[$i]['address']);
$objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 2), $data[$i]['province_id']);
$objPHPExcel->getActiveSheet(0)->setCellValue('G' . ($i + 2), $data[$i]['cashback']);
$objPHPExcel->getActiveSheet(0)->setCellValue('H' . ($i + 2), $data[$i]['brand_name']);
//設置內容水平居中
$objPHPExcel->setActiveSheetIndex(0)->getStyle($i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
$objPHPExcel->getActiveSheet()->setTitle('User');
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean();//清楚緩存區,解決亂碼問題
header("Pragma:public");
header("Content-Type:application/x-msexecl;name=\"{$name}.xlsx\"");
header("Content-Disposition:inline;filename=\"{$name}.xlsx\"");
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('php://output');
exit;
}
//導出excel
vendor('PHPExcel.PHPExcel'); //引入PHPExcel類
$objPHPExcel = new \PHPExcel(); //實例化 相當於在桌面新建一個excel
// 表頭
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'id')
->setCellValue('B1', '訂單編號')
->setCellValue('C1', '收貨人姓名')
->setCellValue('D1', '收貨人電話')
->setCellValue('E1', '地址')
->setCellValue('F1', '省份')
->setCellValue('G1', '返現金額')
->setCellValue('H1', '品牌名稱');
//設置內容水平居中
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 設置個表格寬度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(24);
//設置單元格自動寬度
$objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
// 內容
for ($i = 0, $len = count($data); $i < $len; $i++) {
$objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 2), $data[$i]['part_order_id']);
$objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 2), $data[$i]['order_id']);
$objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 2), $data[$i]['accept_name']);
$objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 2), $data[$i]['phone']);
$objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 2), $data[$i]['address']);
$objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 2), $data[$i]['province_id']);
$objPHPExcel->getActiveSheet(0)->setCellValue('G' . ($i + 2), $data[$i]['cashback']);
$objPHPExcel->getActiveSheet(0)->setCellValue('H' . ($i + 2), $data[$i]['brand_name']);
//設置內容水平居中
$objPHPExcel->setActiveSheetIndex(0)->getStyle($i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
$objPHPExcel->getActiveSheet()->setTitle('User');
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean();//清楚緩存區,解決亂碼問題
header("Pragma:public");
header("Content-Type:application/x-msexecl;name=\"{$name}.xlsx\"");
header("Content-Disposition:inline;filename=\"{$name}.xlsx\"");
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('php://output');
exit;
}
//導出excel
public function push()
{
$data = M()->table("part_order")->where(['user_id'=>1583])->select();
$fileName = "導出訂單時間".date('Ymd');
$this->ExportExcelOrder($data, $fileName);
}
方法二、
public function export($title,$data,$fileName)
{
vendor('PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel();
//橫向單元格標識
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H');
$objPHPExcel->getActiveSheet(0)->setTitle('我的訂單'); //設置sheet名稱
$_row = 1; //設置縱向單元格標識
if($title){
$_cnt = count($title);
//合併單元格 設置字體加粗 字號
$objPHPExcel->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row)->getStyle()
->getFont()->setBold(true)->setSize(13);
//字體水平居中
$objPHPExcel->getActiveSheet(0)->getStyle('A'.$_row.':'.$cellName[$_cnt-1].$_row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//設置合併後的單元格內容
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$_row, '訂單導出:'.date('Y-m-d H:i:s'));
$_row++;
$i = 0;
foreach($title AS $v){
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension($cellName[$i].$_row)->setAutoSize(true);//設置單元格自動寬度
$objPHPExcel->setActiveSheetIndex(0)->getStyle($cellName[$i].$_row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);//單個單元格居左
//設置列標題
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v);
$i++;
}
$_row++;
}
//填寫數據
if($data){
$i = 0;
foreach($data AS $_v){
$j = 0;
foreach($_v AS $_cell){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell);
$j++;
}
$i++;
}
}
//文件名處理
if(!$fileName){
$fileName = uniqid(time(),true);
}
header("Pragma:public");
header("Content-Type:application/x-msexecl;name=\"{$fileName}.xlsx\"");
header("Content-Disposition:inline;filename=\"{$fileName}.xlsx\"");
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('php://output');
exit;
}
//導出excel
public function pull()
{
$title = ['id','訂單編號','收貨人姓名','收貨人電話','地址','省份','返現金額','品牌名稱'];
$data = M()->table("part_order")
->field("part_order_id,order_id,accept_name,accept_phone,address,province_id,cashback,brand_name")
->where(['user_id'=>1583])->select();
$fileName = "導出訂單時間".date('Ymd');
$this->export($title,$data,$fileName);
}