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

 

 

 

 

 

PHP导出指定格式excel

上一篇:《C++ Without Fear》 第1章 第一个C++程序


下一篇:js 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果