1.下载PHPExcel
composer下载: composer require phpoffice/phpexcel
没有安装composer的话可以去https://github.com/PHPOffice/PHPExcel下载,
2.引入
use PHPExcel;
use PHPExcel_IOFactory;
3.使用
根据自己需求设置标题,宽高
public function getListToExcel($where = null)
{
$res = $this
->order('id', 'desc')
->where($where)
->select()
->toArray();
if ($res) {
//导出表格
$objExcel = new PHPExcel();
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');
// 设置水平垂直居中
$objExcel->getActiveSheet()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objExcel->getActiveSheet()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
// 字体和样式
$objExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
$objExcel->getActiveSheet()->getStyle('A2:AB2')->getFont()->setBold(true);
$objExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
// 第一行、第二行的默认高度
$objExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
$objExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);
//设置某一列的宽度
$objExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$objExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$objExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
$objExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);
$objExcel->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$objExcel->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$objExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
//设置表头
// 合并
$objExcel->getActiveSheet()->mergeCells('A1:I1');
$objActSheet = $objExcel->getActiveSheet(0);
$objActSheet->setTitle('结算统计');//设置excel的标题
$objActSheet->setCellValue('A1', '结算统计');
$objActSheet->setCellValue('A2', '日期');
$objActSheet->setCellValue('B2', '充值笔数');
$objActSheet->setCellValue('C2', '当日充值');
$objActSheet->setCellValue('D2', '佣金比例');
$objActSheet->setCellValue('E2', '邀请奖励');
$objActSheet->setCellValue('F2', '订单退款');
$objActSheet->setCellValue('G2', '结算金额');
$objActSheet->setCellValue('H2', '状态');
$baseRow = 3; //数据从N-1行开始往下输出 这里是避免头信息被覆盖
foreach ($res as $r => $d) {
$i = $baseRow + $r;
$objExcel->getActiveSheet()->setCellValue('A' . $i, $d['date']);
$objExcel->getActiveSheet()->setCellValue('B' . $i, $d['num']);
$objExcel->getActiveSheet()->setCellValue('C' . $i, $d['recharge']);
$objExcel->getActiveSheet()->setCellValue('D' . $i, $d['rate']);
$objExcel->getActiveSheet()->setCellValue('E' . $i, $d['invest_money']);
$objExcel->getActiveSheet()->setCellValue('F' . $i, $d['refund_money']);
$objExcel->getActiveSheet()->setCellValue('G' . $i, $d['money']);
$objExcel->getActiveSheet()->setCellValue('H' . $i, $d['status']);
}
$objExcel->setActiveSheetIndex(0);
//输出
$objExcel->setActiveSheetIndex();
header('Content-Type: applicationnd.ms-excel');
$time = date('YmdHis');
header("Content-Disposition: attachment;filename=结算统计$time.xls");
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit();
}
}