以PHPExcel为例
1、composer require phpoffice/phpexcel
2、 //导出指定格式excel public function excel() { /** *第一步:实例化PHPExcel类 等同于在桌面上新建一个Excel表格 **/ $objPHPExcel = new \PHPExcel(); /** *第二步:获得当前活动sheet的操作对象 **/ $obSheet = $objPHPExcel->getActiveSheet(); /** *第三步:给当前活动sheet设置名字 **/ $obSheet->setTitle('第一个sheet'); /** *第四步:向单元格内插入内容 **/ // $obSheet->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);//设置A1水平右对齐 // $obSheet->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置A1水平居中 // $obSheet->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);//设置A1水平左对齐 // $obSheet->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置A1垂直居中 // $obSheet->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_TOP);//设置A1垂直靠上 // $obSheet->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_BOTTOM);//应该是bottom吧,这个没用到,网上也没找到,自己也没做测试,哈哈,就先这样吧 // $obSheet->getDefaultRowDimension()->setRowHeight(30);//设置默认高度30 // $obSheet-> getStyle('A1') -> getFont() -> setSize(14);//设置单元格的字体大小 // $obSheet->getStyle("A1")->getFont()->setBold(true); //设置单元格字体为粗体 // $obSheet-> getStyle('A4')->getFont()->getColor()->setRGB('ff0000');//设置单元格字体颜色 // $obSheet->getStyle('C')->getAlignment()->setWrapText(True);//设置自动换行 // $obSheet->getRowDimension('1')->setRowHeight(45);//单独设置一行的高度 // $obSheet->getColumnDimension('B')->setWidth(21);//设置单元格宽度 $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置默认水平居中 $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置默认垂直居中 $obSheet->getDefaultStyle()->getFont()->setSize(11);//设置默认字体大小 $obSheet->mergeCells("H4:I5");//合并单元格 $obSheet->mergeCells("J4:W5"); $obSheet->mergeCells("H6:L9"); $obSheet->mergeCells("H10:L11"); $obSheet->mergeCells("H12:L13"); $obSheet->mergeCells("H14:L15"); $obSheet->mergeCells("H16:L17"); $obSheet->mergeCells("H18:L19"); $obSheet->mergeCells("H20:I23"); $obSheet->mergeCells("J20:V23"); $obSheet->mergeCells("M6:N9"); $obSheet->mergeCells("W6:W7"); $obSheet->mergeCells("W8:W9"); $obSheet->mergeCells("W10:W11"); $obSheet->mergeCells("M10:N11"); $obSheet->mergeCells("M12:N13"); $obSheet->mergeCells("M14:N15"); $obSheet->mergeCells("M16:N17"); $obSheet->mergeCells("M18:N19"); $obSheet->mergeCells("O6:V7"); $obSheet->mergeCells("O8:O9"); $obSheet->mergeCells("P8:P9"); $obSheet->mergeCells("Q8:Q9"); $obSheet->mergeCells("R8:R9"); $obSheet->mergeCells("S8:S9"); $obSheet->mergeCells("T8:T9"); $obSheet->mergeCells("U8:U9"); $obSheet->mergeCells("V8:V9"); $obSheet->mergeCells("O10:O11"); $obSheet->mergeCells("P10:P11"); $obSheet->mergeCells("Q10:Q11"); $obSheet->mergeCells("R10:R11"); $obSheet->mergeCells("S10:S11"); $obSheet->mergeCells("T10:T11"); $obSheet->mergeCells("U10:U11"); $obSheet->mergeCells("V10:V11"); //目前还不知道字的间距 就用空格隔开了,欢迎大神指教 $obSheet->setCellValue("H4","客户")->getStyle('H4')->getFont()->setBold(true)->setSize(15)->getColor()->setRGB('696969');//向单元格内添加内容 $obSheet->setCellValue("H6","项 目")->getStyle('H6')->getFont()->setBold(true)->setSize(20)->getColor()->setRGB('696969');//加粗 $obSheet->setCellValue("H20","人民币")->getStyle('H20')->getFont()->setBold(true)->setSize(20)->getColor()->setRGB('696969'); $obSheet->setCellValue("J20","十 万 一 百 圆 角 分")->getStyle('J20')->getFont()->setBold(true)->setSize(20)->getColor()->setRGB('696969'); $obSheet->setCellValue("M6","数 量")->getStyle('M6')->getFont()->setBold(true)->setSize(20)->getColor()->setRGB('696969'); $obSheet->setCellValue("O6","金 额")->getStyle('O6')->getFont()->setBold(true)->setSize(15)->getColor()->setRGB('696969'); $obSheet->setCellValue("O8","百")->getStyle('O8')->getFont()->setBold(true)->setSize(15)->getColor()->setRGB('696969'); $obSheet->setCellValue("W6","备注")->getStyle('W6')->getFont()->setBold(true)->setSize(15)->getColor()->setRGB('696969'); $obSheet->getColumnDimension('O')->setWidth(3);//设置单元格宽度 $obSheet->getColumnDimension('P')->setWidth(3); $obSheet->getColumnDimension('Q')->setWidth(3); $obSheet->getColumnDimension('R')->setWidth(3); $obSheet->getColumnDimension('S')->setWidth(3); $obSheet->getColumnDimension('T')->setWidth(3); $obSheet->getColumnDimension('U')->setWidth(3); $obSheet->getColumnDimension('V')->setWidth(3); /** *向单元格中插入照片 **/ // $objDrawing = new \PHPExcel_Worksheet_Drawing();//实例化插入图片类 // $objDrawing->setPath('./5d282e5928206.png');//设置图片路径 // $objDrawing->setHeight(108);//图片高度 // $objDrawing->setWidth(312); //照片宽度 // $objDrawing->setCoordinates("A1");//图片插入的位置 // $objDrawing->setOffsetX(12);//图片X轴的偏移量 // $objDrawing->setOffsetY(12);//图片Y轴的偏移量 // $objDrawing->setWorksheet($obSheet);//不知道干啥的,反正不写这一步图片就插不进去 // $obSheet->setCellValue("A1","xxxxxxxxxxx\n xxxxxxxxxx");//如果要自己在单元格内打断文字的话加个\n,然后加上下面那句,就能打断文字了 // $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);//设置自动换行,与上面的呼应 /** *设置表格中的单元格全部带边框 **/ $styleThinBlackBorderOutline = array( 'borders' => array( 'allborders' => array( //设置全部边框 'style' => \PHPExcel_Style_Border::BORDER_THIN //粗的是thick ), ), ); $objPHPExcel->getActiveSheet()->getStyle( 'H4:W23')->applyFromArray($styleThinBlackBorderOutline); //设置区域 /** *第五步:设置header头,包括设置Excel文件格式,是Excel2005还是Excel2007,文件名等等 **/ ob_end_clean();//清除缓冲区,避免乱码 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.date('Y-m-d',time()).'.xlsx"'); header('Cache-Control: max-age=0'); /** *第六步:将上面做的表格内容写入到Excel文件中,并设置文件格式 **/ $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); /** *第七步:使用户下载 *一定记得要写上最后那一句exit,不然导出的文件打开时会提示错误 **/ $objWriter->save('php://output'); exit; }
3、效果如图(半成品,太懒了)