• PHPExcel的使用小结,不够全面,只是应对当前我用到的地方做了笔记,日后再有新的需求还会随时修改


    首先,用的thinkphp5.0框架,在项目根目录下composer下载PHPExcel;

    composer require phpoffice/phpexcel
    

      然后在控制器中直接use就可以了,简单的流程图如下:

    <?php
    namespace appindexcontroller;
    use thinkController;
    use thinkDb;
    use PHPExcel_IOFactory;
    use PHPExcel;
    class User extends Controller
    {
        public function excel(){
            $data = Db::name('shop_cart')->where('phone','15555555555')->select();
            /**
            *第一步:实例化PHPExcel类 等同于在桌面上新建一个Excel表格
            **/
            $objPHPExcel = new PHPExcel();//
            /**
            *第二步:获得当前活动sheet的操作对象
            **/
            $objSheet = $objPHPExcel->getActiveSheet();//
            /**
            *第三步:给当前活动sheet设置名字
            **/
            $objSheet->setTitle('worksheet');//
            /**
            *第四步:向单元格内插入内容
            **/
            $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置默认水平居中
            $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置默认垂直居中
            $obSheet->getDefaultStyle()->getFont()->setSize(11);//设置默认字体大小
            $obSheet->getDefaultRowDimension()->setRowHeight(30);//设置默认高度30
            $obSheet->mergeCells("A1:N2");//合并单元格
            $obSheet->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);//设置A1水平右对齐
            $obSheet->getStyle('A'.$j)->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吧,这个没用到,网上也没找到,自己也没做测试,哈哈,就先这样吧
            $objSheet-> getStyle('A1') -> getFont() -> setSize(14);//设置单元格的字体大小   
            $objSheet->getStyle("A1")->getFont()->setBold(true); //设置单元格字体为粗体
            $objSheet-> getStyle('A4')->getFont()->getColor()->setRGB('ff0000');//设置单元格字体颜色
            $objSheet->getStyle('C')->getAlignment()->setWrapText(True);//设置自动换行
            $objSheet->getRowDimension('1')->setRowHeight(45);//单独设置一行的高度
            $objSheet->getColumnDimension('B')->setWidth(21);//设置单元格宽度
            $objSheet->setCellValue("A3","销售合同-附件(产品清单)");//向单元格内添加内容
    
            /**
            *向单元格中插入照片
            **/    
            $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($objSheet);//不知道干啥的,反正不写这一步图片就插不进去
            $objSheet->setCellValue("A1","xxxxxxxxxxx
     xxxxxxxxxx");//如果要自己在单元格内打断文字的话加个
    ,然后加上下面那句,就能打断文字了
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);//设置自动换行,与上面的呼应
            /**
            *设置表格中的单元格全部带边框
            **/
            $styleThinBlackBorderOutline = array(
                'borders' => array(
                    'allborders' => array( //设置全部边框
                        'style' => PHPExcel_Style_Border::BORDER_THIN //粗的是thick
                    ),
                ),
            );
            $objPHPExcel->getActiveSheet()->getStyle( 'A1:N21')->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;
        }
    }

    当然,写的不全,也不可能记住,以后再用到的时候再来看的吧,谁叫咱不会英语看不懂手册呢。

    其实这个也不难学,主要是做的时候挺麻烦的,嗯。。。就这些吧

      

  • 相关阅读:
    (基本知识)Redis 字符串(String)相关函数
    (基本知识)Redis 键相关命令函数
    (基本知识)Redis连接与安全
    centos7 php开发环境安装-Redis
    centos7 php开发环境安装--配置SSL(Apache为例)
    centos7 php开发环境安装-Git
    centos7 php开发环境安装-Nginx
    串口发送数据
    七大查找算法
    基于STM32原子战舰板内存管理源码详解
  • 原文地址:https://www.cnblogs.com/dayin1/p/11698168.html
Copyright © 2020-2023  润新知