PHP导出指定格式excel
Posted 满眼都是她
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP导出指定格式excel相关的知识,希望对你有一定的参考价值。
以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、效果如图(半成品,太懒了)
以上是关于PHP导出指定格式excel的主要内容,如果未能解决你的问题,请参考以下文章