phpExcel用法

作者: 愤怒的码农啊 | 来源:发表于2018-06-21 17:30 被阅读0次

    一、简介

    PHPExcel是一个处理Excel,CVS文件的开源框架,但不幸的是PHPExcel官方已不再维护了这个项目了,官方团队在github上又起了一个新项目,叫PhpSpreadsheet。有兴趣的可以去看下。

    二、优缺点

    优点:
    • 开源
    • 功能非常丰富,API非常多,可以使用它来读取、写入不同格式的电子表格,这也是PHP至今最通用的Excel处理工具
    缺点:
    • 特别占内存,对大批量的表格数据几乎会让人累觉不爱,处理速度非常慢
    • PHPExcel官方已不再维护了这个项目

    三、常用方法

    require_once './phpexcel/PHPExcel.php';   //引用phpexcel文件
    /* 创建对象 */
    $objPHPExcel = new PHPExcel(); //首先创建一个新的对象  PHPExcel object
    /* 对表格操作 */
    //创建新的内置表
    $objPHPExcel->createSheet();//创建新的内置表
    $objPHPExcel->setActiveSheetIndex(0); //设置第一个内置表(一个xls文件里可以有多个表)为活动的
    $objActiveSheet = $objPHPExcel->getActiveSheet();//得到当前活动的表
    $objActiveSheet ->setTitle('三年二班'); //给当前活动的表设置名称 
    $objActiveSheet ->setCellValue( 'A1', 'Hello' ); //给表的单元格设置数据,可以连贯操作
    $objActiveSheet ->getCell('A1') ->setValue('Hello'); //与上一行作用相同
    $objActiveSheet -> fromArray($data,null,'A2'); //从数组赋值,
    //第一个参数是要负责的二维数组,如$data = array( array(NULL, 2010, 2011, 2012), array('Q1', 12, 15, 21), array('Q2', 56, 73, 86), array('Q3', 52, 61, 69), array('Q4', 30, 32, 0));
    //第二个参数讲什么设置成空白单元格,默认为null(@param mixed $nullValue Value in source array that stands for blank cell)
    //第三个参数是从哪个单元格开始填充
    
    //代码示例
        /**
         * 导出到excel
         * @param $data
         * @param $outfilename
         * @param $classname
         */
        public function exportExcel($data, $outfilename, $classname){
            vendor('Excel.PHPExcel');
            //创建PHPExcel对象
            $objPHPExcel = new PHPExcel();
            $objPHPExcel -> setActiveSheetIndex(0); //设置第一个内置表为活动的
            $objActiveSheet = $objPHPExcel->getActiveSheet();
            //获取总人数
            $count = isset($data['data']) ? count($data['data']) : 0;
            $title = $classname.' 共'.$count.'人';
            $objActiveSheet -> setTitle($title);
            for($i=0;$i<$data['total_count'];$i++){
                $objActiveSheet->getColumnDimensionByColumn($i)->setWidth(15); //设置列宽带
            }
            //第一行数据填充
            if(isset($data['row1'])){
                foreach ($data['row1'] as $val){
                    $pColumn1 = $val['index'];
                    if($val['count'] > 1){
                        $pColumn2 = $pColumn1 + $val['count'] - 1;
                        $objActiveSheet->mergeCellsByColumnAndRow($pColumn1,1,$pColumn2,1)->setCellValueByColumnAndRow($pColumn1,1,$val['catename']);
                    }else{
                        $objActiveSheet -> setCellValueByColumnAndRow($pColumn1, 1, $val['catename']);//通过行列值来给单元格赋值
                    }
                    $objActiveSheet->getStyleByColumnAndRow($pColumn1,1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置对齐方式
                }
            }
            //第二行数据填充
            if(isset($data['row2'])){
                $objActiveSheet -> fromArray($data['row2'],null,'A2');
            }
            //用户行数据填充
            if(isset($data['data'])){
                $objActiveSheet -> fromArray($data['data'], null,'A3');
            }
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
            //header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            //header("Content-Disposition: attachment; filename=\"$outfilename\"");
            //header('Cache-Control: max-age=0');
            //$objWriter->save('php://output')
            $objWriter->save($outfilename); //直接保存到服务器上git
        }
    

    相关文章

      网友评论

        本文标题:phpExcel用法

        本文链接:https://www.haomeiwen.com/subject/taqcyftx.html