搜索
首页后端开发php教程phpexecl导出 循环时间问题

做php导出,需要循环输出数据到execl中,一开始写了一个,觉得时间有点长,就缩短了下,发现时间还变多了,求教这是为什么啊?谢谢了先。

原先的代码片段:

<code>//归总每个一级分类下的二级分类
foreach($first_cate_array as $fkey => $fvalue){
    foreach($cate as $ck=>$cv){                             
        if($cv['parentid'] == $fvalue['id']){
            $first_cate_array[$fkey]['second_cate'][] = $cv;
        }
    }

    //获得每个一级分类下二级分类的数目
    $second_count = count($first_cate_array[$fkey]['second_cate']); 
    $first_cate_array[$fkey]['second_count'] = $second_count == 0 ? 1 : $second_count;  
}

/*************************************************************************/
foreach($first_cate_array as $fk => $fv){
    //一级目录起始行数
    if($fk == 0){
        $stapos = $num;
        $en_stapos = $stapos+$cate_count;
    }else{
        $stapos = $stapos+$first_cate_array[$fk-1]['second_count'];
        $en_stapos = $stapos+$cate_count;
    }

    foreach($fv['second_cate'] as $sck => $scv){
        //二级目录起始行数
        $stapos1 = $stapos+$sck;
        $en_stapos1 = $en_stapos+$sck;
        foreach($scv['pro'] as $spk => $spv){
            $str1 = 70+$spk*3;
            $str1 = chr($str1);
            $str2 = 71+$spk*3;
            $str2 = chr($str2);
            $str3 = 72+$spk*3;
            $str3 = chr($str3);
            //中文
            $collect = $spv['name'].'('.$spv['description'].')';
            $objActSheet->setCellValue($str1.$stapos1, $collect);
            $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
            $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
            //英文
            $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
            $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
            $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
            $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
        }
        //中文
        $objActSheet->setCellValue('E'.$stapos1, $scv['category']);
        //英文
        $objActSheet->setCellValue('E'.$en_stapos1, $scv['en_category']);
    }
    //中文
    $objActSheet->setCellValue('D'.$stapos, $fv['category']);
    $stopos = $stapos + $fv['second_count'] - 1;
    $mergecellstr = 'D'.$stapos.':D'.$stopos;
    $objActSheet->mergeCells($mergecellstr);
    //英文
    $objActSheet->setCellValue('D'.$en_stapos, $fv['en_category']);
    $en_stopos = $en_stapos + $fv['second_count'] - 1;
    $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
    $objActSheet->mergeCells($en_mergecellstr);
}
</code>

修改以后的片段:

<code>$second_count = 0;
//归总每个一级分类下的二级分类
foreach($first_cate_array as $fkey => $fvalue){
    //一级目录起始行数
    $stapos = $num+$second_count;
    $en_stapos = $stapos+$cate_count;
    $second_stapos = 0;
    foreach($cate as $ck=>$cv){
        if($cv['parentid'] == $fvalue['id']){
            //二级目录起始行数
            $stapos1 = $stapos+$second_stapos;
            $en_stapos1 = $en_stapos+$second_stapos;                                    
            foreach($cv['pro'] as $spk => $spv){
                $str1 = 70+$spk*3;
                $str1 = chr($str1);
                $str2 = 71+$spk*3;
                $str2 = chr($str2);
                $str3 = 72+$spk*3;
                $str3 = chr($str3);
                //中文
                $collect = $spv['name'].'('.$spv['description'].')';
                $objActSheet->setCellValue($str1.$stapos1, $collect);
                $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
                $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
                //英文
                $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
                $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
                $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
                $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
            }
            //中文
            $objActSheet->setCellValue('E'.$stapos1, $cv['category']);
            //英文
            $objActSheet->setCellValue('E'.$en_stapos1, $cv['en_category']);
            $second_stapos ++ ;
            $second_count ++ ;
        }
    }                           
    //中文
    $objActSheet->setCellValue('D'.$stapos, $fvalue['category']);
    $stopos = $num + $second_count - 1;
    $mergecellstr = 'D'.$stapos.':D'.$stopos;
    $objActSheet->mergeCells($mergecellstr);
    //英文
    $objActSheet->setCellValue('D'.$en_stapos, $fvalue['en_category']);
    $en_stopos = $num + $cate_count + $second_count - 1;
    $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
    $objActSheet->mergeCells($en_mergecellstr);
}
</code>

我觉得原先的代码多一个上面的循环,时间应该多一点。。。查询1700条数据耗时84s。。。 下面附上全文代码:

    /**
     * 导出Execl
     */
    public function export(){
        import("@.ORG.PhpExcel");
        //import("Lib.ORG.PHPExcel.IOFactory",APP_PATH,".php");
        import("Lib.ORG.PHPExcel.Writer.Excel5",APP_PATH,".php");
        import("Lib.ORG.PHPExcel.Writer.Excel2007",APP_PATH,".php");

        // 创建一个处理对象实例   
        $objPHPExcel = new PHPExcel();   

        // 创建文件格式写入对象实例, uncomment   
        //$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);                // 用于其他版本格式   
        // or   
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);               // 用于 2007 格式   
        //$objWriter->setOffice2003Compatibility(true);   

        //*************************************   
        //设置文档基本属性   
//      $objProps = $objPHPExcel->getProperties();   
//      $objProps->setCreator("Test");                                          //创建人
//      $objProps->setLastModifiedBy("Test");                                   //最后修改人
//      $objProps->setTitle("Office XLS Test Document");                        //标题
//      $objProps->setSubject("Office XLS Test Document, Demo");                //题目
//      $objProps->setDescription("Test document, generated by PHPExcel.");     //描述
//      $objProps->setKeywords("office excel PHPExcel");                        //关键字
//      $objProps->setCategory("Test");                                         //种类

        //*************************************   
        //设置当前的sheet索引,用于后续的内容操作。   
        //一般只有在使用多个sheet的时候才需要显示调用。   
        //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0   
        $objPHPExcel->setActiveSheetIndex(0);   

        $objActSheet = $objPHPExcel->getActiveSheet();   

        //设置当前活动sheet的名称   
        //$objActSheet->setTitle('测试Sheet');

        //*************************************  
        //设置单元格内容   
        //   
        //由PHPExcel根据传入内容自动判断单元格内容类型   
        //$objActSheet->setCellValue('A1', '字符串内容');                        // 字符串内容   
        //$objActSheet->setCellValue('A2', 26);                                 // 数值   
        //$objActSheet->setCellValue('A3', true);                               // 布尔值   
        //$objActSheet->setCellValue('A4', '=SUM(A2:A2)');                      // 公式     

        //填入主标题
        $objActSheet->setCellValue('A1', '电子地图');
        $objActSheet->mergeCells('A1:AC1');
        //设置表头行高
        $objActSheet->getRowDimension(1)->setRowHeight(20);

        $objActSheet->setCellValue('A2', '序号');
        $objActSheet->mergeCells('A2:A4');   
        $objActSheet->setCellValue('B2', '公司名称');
        $objActSheet->mergeCells('B2:B4');  
        $objActSheet->setCellValue('C2', '简称');
        $objActSheet->mergeCells('C2:C4'); 
        $objActSheet->setCellValue('D2', '产品与技术');
        $objActSheet->mergeCells('D2:N2'); 
        $objActSheet->setCellValue('O2', '相关信息');
        $objActSheet->mergeCells('O2:S2');
        $objActSheet->setCellValue('T2', '联系信息');
        $objActSheet->mergeCells('T2:AB2');
        $objActSheet->setCellValue('AC2', '描述');
        $objActSheet->mergeCells('AC2:AC4');

        $objActSheet->setCellValue('D3', '领域');
        $objActSheet->mergeCells('D3:E3');
        $objActSheet->setCellValue('F3', '产品');
        $objActSheet->mergeCells('F3:N3');
        $objActSheet->setCellValue('O3', '技术');
        $objActSheet->mergeCells('O3:O4');
        $objActSheet->setCellValue('P3', '应用');
        $objActSheet->mergeCells('P3:P4');
        $objActSheet->setCellValue('Q3', '性质');
        $objActSheet->mergeCells('Q3:Q4');
        $objActSheet->setCellValue('R3', '成立时间');
        $objActSheet->mergeCells('R3:R4');
        $objActSheet->setCellValue('S3', '员工数');
        $objActSheet->mergeCells('S3:S4');
        $objActSheet->setCellValue('T3', '地址');
        $objActSheet->mergeCells('T3:T4');
        $objActSheet->setCellValue('U3', '电话');
        $objActSheet->mergeCells('U3:U4');
        $objActSheet->setCellValue('V3', '传真');
        $objActSheet->mergeCells('V3:V4');
        $objActSheet->setCellValue('W3', 'eMail');
        $objActSheet->mergeCells('W3:W4');
        $objActSheet->setCellValue('X3', '网站');
        $objActSheet->mergeCells('X3:X4');
        $objActSheet->setCellValue('Y3', '经度');
        $objActSheet->mergeCells('Y3:Y4');
        $objActSheet->setCellValue('Z3', '纬度');
        $objActSheet->mergeCells('Z3:Z4');
        $objActSheet->setCellValue('AA3', '园区');
        $objActSheet->mergeCells('AA3:AA4');
        $objActSheet->setCellValue('AB3', '城市');
        $objActSheet->mergeCells('AB3:AB4');

        $objActSheet->setCellValue('D4', '一级');
        $objActSheet->setCellValue('E4', '二级');
        $objActSheet->setCellValue('F4', '1');
        $objActSheet->setCellValue('G4', '品名');
        $objActSheet->setCellValue('H4', '描述');
        $objActSheet->setCellValue('I4', '2');
        $objActSheet->setCellValue('J4', '品名');
        $objActSheet->setCellValue('K4', '描述');
        $objActSheet->setCellValue('L4', '3');
        $objActSheet->setCellValue('M4', '品名');     
        $objActSheet->setCellValue('N4', '描述');

        //*************************************   
        //搜索条件
        $company_where = 1;
        $keyword = trim($_GET['keyword']);
        if($_GET['sub_category'] || $_GET['first_cid']){
            $c_uid =getuidbycate();
        }
        if($_GET['product_id']){
            $p_uid =getuidbypro($_GET['product_id']);
        }
        $uid_arr = $p_uid?array_intersect($c_uid,$p_uid):$c_uid;
        $uid_str = implode(',',$uid_arr);
        if($_GET['sub_category'] || $_GET['first_cid'] || $_GET['product_id']){
            $company_where .= ' and uid in('.$uid_str.')';
        }
        if($keyword){
            $company_where .= " and company like '%$keyword%'";
        }

        $num = 5;       //初始行数

        //公司信息  
        $company = $this->Company->field('')->where($company_where)->select();
        if($company){
            foreach((array)$company as $k => $v){
                if($v['uid']){
                    //获取产品
                    $pro = $this->Product->table(tname('product').' AS pr')->join(tname('company_product').' AS cp ON pr.id=cp.pid')->field('')->where('cp.uid='.$v['uid'])->group('pr.id')->select();
                    $company[$k]['pid'] = $pro;
                    //获取二级分类
                    $join = tname('company_category').' AS cc ON ca.id=cc.cid';
                    $field = ''; 
                    $where = "cc.uid=".$v['uid'];
                    $cate = $this->Category->table(tname('category').' AS ca')->join($join)->field($field)->where($where)->group('ca.id')->select();
                    if($cate){
                        $cate_count = count($cate);
                        $second_cate = '';
                        $first_cate_array = '';
                        foreach($cate as $k1=>$v1){
                            //获取一级分类
                            $first_cate = $this->Category->where('id='.$v1['parentid'])->find();
                            //归总公司的一级分类
                            if(!in_array($first_cate,$first_cate_array)){
                                $first_cate_array[] = $first_cate;
                            }
                            //归类二级分类下的产品
                            foreach($pro as $pk => $pv){
                                if($pv['cid'] == $v1['cid']){
                                    $cate[$k1]['pro'][] = $pv;
                                }
                            }
                        }

                        /**************************************************************************/
//                      $second_count = 0;
//                      //归总每个一级分类下的二级分类
//                      foreach($first_cate_array as $fkey => $fvalue){
//                          //一级目录起始行数
//                          $stapos = $num+$second_count;
//                          $en_stapos = $stapos+$cate_count;
//                          $second_stapos = 0;
//                          foreach($cate as $ck=>$cv){
//                              if($cv['parentid'] == $fvalue['id']){
//                                  //二级目录起始行数
//                                  $stapos1 = $stapos+$second_stapos;
//                                  $en_stapos1 = $en_stapos+$second_stapos;                                    
//                                  foreach($cv['pro'] as $spk => $spv){
//                                      $str1 = 70+$spk*3;
//                                      $str1 = chr($str1);
//                                      $str2 = 71+$spk*3;
//                                      $str2 = chr($str2);
//                                      $str3 = 72+$spk*3;
//                                      $str3 = chr($str3);
//                                      //中文
//                                      $collect = $spv['name'].'('.$spv['description'].')';
//                                      $objActSheet->setCellValue($str1.$stapos1, $collect);
//                                      $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
//                                      $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
//                                      //英文
//                                      $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
//                                      $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
//                                      $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
//                                      $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
//                                  }
//                                  //中文
//                                  $objActSheet->setCellValue('E'.$stapos1, $cv['category']);
//                                  //英文
//                                  $objActSheet->setCellValue('E'.$en_stapos1, $cv['en_category']);
//                                  $second_stapos ++ ;
//                                  $second_count ++ ;
//                              }
//                          }                           
//                          //中文
//                          $objActSheet->setCellValue('D'.$stapos, $fvalue['category']);
//                          $stopos = $num + $second_count - 1;
//                          $mergecellstr = 'D'.$stapos.':D'.$stopos;
//                          $objActSheet->mergeCells($mergecellstr);
//                          //英文
//                          $objActSheet->setCellValue('D'.$en_stapos, $fvalue['en_category']);
//                          $en_stopos = $num + $cate_count + $second_count - 1;
//                          $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
//                          $objActSheet->mergeCells($en_mergecellstr);
//                      }

                        /**************************************************************************/

                        //归总每个一级分类下的二级分类
                        foreach($first_cate_array as $fkey => $fvalue){
                            foreach($cate as $ck=>$cv){                             
                                if($cv['parentid'] == $fvalue['id']){
                                    $first_cate_array[$fkey]['second_cate'][] = $cv;
                                }
                            }

                            //获得每个一级分类下二级分类的数目
                            $second_count = count($first_cate_array[$fkey]['second_cate']); 
                            $first_cate_array[$fkey]['second_count'] = $second_count == 0 ? 1 : $second_count;  
                        }

                        /*************************************************************************/
                        foreach($first_cate_array as $fk => $fv){
                            //一级目录起始行数
                            if($fk == 0){
                                $stapos = $num;
                                $en_stapos = $stapos+$cate_count;
                            }else{
                                $stapos = $stapos+$first_cate_array[$fk-1]['second_count'];
                                $en_stapos = $stapos+$cate_count;
                            }

                            foreach($fv['second_cate'] as $sck => $scv){
                                //二级目录起始行数
                                $stapos1 = $stapos+$sck;
                                $en_stapos1 = $en_stapos+$sck;
                                foreach($scv['pro'] as $spk => $spv){
                                    $str1 = 70+$spk*3;
                                    $str1 = chr($str1);
                                    $str2 = 71+$spk*3;
                                    $str2 = chr($str2);
                                    $str3 = 72+$spk*3;
                                    $str3 = chr($str3);
                                    //中文
                                    $collect = $spv['name'].'('.$spv['description'].')';
                                    $objActSheet->setCellValue($str1.$stapos1, $collect);
                                    $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
                                    $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
                                    //英文
                                    $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
                                    $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
                                    $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
                                    $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
                                }
                                //中文
                                $objActSheet->setCellValue('E'.$stapos1, $scv['category']);
                                //英文
                                $objActSheet->setCellValue('E'.$en_stapos1, $scv['en_category']);
                            }
                            //中文
                            $objActSheet->setCellValue('D'.$stapos, $fv['category']);
                            $stopos = $stapos + $fv['second_count'] - 1;
                            $mergecellstr = 'D'.$stapos.':D'.$stopos;
                            $objActSheet->mergeCells($mergecellstr);
                            //英文
                            $objActSheet->setCellValue('D'.$en_stapos, $fv['en_category']);
                            $en_stopos = $en_stapos + $fv['second_count'] - 1;
                            $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
                            $objActSheet->mergeCells($en_mergecellstr);
                        }
                        $company[$k]['first_cid'] = $first_cate_array;
                    }
                    //$company[$k]['first_count'] = count($company[$k]['first_cid']);
                    //获得二级分类的总数目
                    $company[$k]['total_rows'] = count($cate);

                    //园区
                    if($v['park']){
                        $park = my_explode($v['park']);
                        $company[$k]['park'] = my_arrytostr(array_unique($park),'Park','name');
                        $company[$k]['en_park'] = my_arrytostr(array_unique($park),'Park','en_name');
                    }else{
                        $v['park'] = '';
                        $v['en_park'] = '';
                    }
                    //城市
                    if($v['city']){
                        $city = C('CITY');
                        foreach($city as $ck=>$cv){
                            if($v['city'] == $cv['id']){
                                $v['city'] = $cv['name'];
                                $v['en_city'] = $cv['en_name'];
                            }
                        }
                    }

                    $total_rows = $company[$k]['total_rows'] == 0 ? 1 : $company[$k]['total_rows'];
                    //中文*************************************   
                    $stop = $num - 1 + $total_rows;

                    $objActSheet->setCellValue('A'.$num, $v['uid']);
                    $objActSheet->mergeCells('A'.$num.':A'.$stop);
                    $objActSheet->setCellValue('B'.$num, $v['company']);
                    $objActSheet->mergeCells('B'.$num.':B'.$stop);
                    $objActSheet->setCellValue('C'.$num, $v['com']);
                    $objActSheet->mergeCells('C'.$num.':C'.$stop);
//
//                  $objActSheet->setCellValue('D'.$num, $v['com']);
//                  $objActSheet->setCellValue('E'.$num, $v['uid']);
//                  $objActSheet->setCellValue('F'.$num, $v['uid']);
//                  $objActSheet->setCellValue('G'.$num, $v['uid']);
//                  $objActSheet->setCellValue('H'.$num, $v['uid']);
//                  $objActSheet->setCellValue('I'.$num, $v['uid']);
//                  $objActSheet->setCellValue('J'.$num, $v['uid']);
//                  $objActSheet->setCellValue('K'.$num, $v['uid']);
//                  $objActSheet->setCellValue('L'.$num, $v['uid']);
//                  $objActSheet->setCellValue('M'.$num, $v['uid']);
//                  $objActSheet->setCellValue('N'.$num, $v['uid']);
//
                    $objActSheet->setCellValue('O'.$num, $v['technology']);
                    $objActSheet->mergeCells('O'.$num.':O'.$stop);
                    $objActSheet->setCellValue('P'.$num, $v['application']);
                    $objActSheet->mergeCells('P'.$num.':P'.$stop);
                    $objActSheet->setCellValue('Q'.$num, $v['nature']);
                    $objActSheet->mergeCells('Q'.$num.':Q'.$stop);
                    $objActSheet->setCellValue('R'.$num, $v['established']);
                    $objActSheet->mergeCells('R'.$num.':R'.$stop);
                    $objActSheet->setCellValue('S'.$num, $v['employees']);
                    $objActSheet->mergeCells('S'.$num.':S'.$stop);
                    $objActSheet->setCellValue('T'.$num, $v['address']);
                    $objActSheet->mergeCells('T'.$num.':T'.$stop);
                    $objActSheet->setCellValue('U'.$num, $v['phone']);
                    $objActSheet->mergeCells('U'.$num.':U'.$stop);
                    $objActSheet->setCellValue('V'.$num, $v['fax']);
                    $objActSheet->mergeCells('V'.$num.':V'.$stop);
                    $objActSheet->setCellValue('W'.$num, $v['email']);
                    $objActSheet->mergeCells('W'.$num.':W'.$stop);
                    $objActSheet->setCellValue('X'.$num, $v['website']);
                    $objActSheet->mergeCells('X'.$num.':X'.$stop);
                    $objActSheet->setCellValue('Y'.$num, $v['longitude']);
                    $objActSheet->mergeCells('Y'.$num.':Y'.$stop);
                    $objActSheet->setCellValue('Z'.$num, $v['latitude']);
                    $objActSheet->mergeCells('Z'.$num.':Z'.$stop);
                    $objActSheet->setCellValue('AA'.$num, $v['park']);
                    $objActSheet->mergeCells('AA'.$num.':AA'.$stop);
                    $objActSheet->setCellValue('AB'.$num, $v['city']);
                    $objActSheet->mergeCells('AB'.$num.':AB'.$stop);
                    $objActSheet->setCellValue('AC'.$num, $v['description']);
                    $objActSheet->mergeCells('AC'.$num.':AC'.$stop);

                    //英文*************************************   
                    $en_start = $num + $total_rows;
                    $en_stop = $en_start - 1 + $total_rows;

                    $objActSheet->setCellValue('A'.$en_start, $v['uid']);
                    $objActSheet->mergeCells('A'.$en_start.':A'.$en_stop);
                    $objActSheet->setCellValue('B'.$en_start, $v['en_company']);
                    $objActSheet->mergeCells('B'.$en_start.':B'.$en_stop);
                    $objActSheet->setCellValue('C'.$en_start, $v['en_com']);
                    $objActSheet->mergeCells('C'.$en_start.':C'.$en_stop);
//
//                  $objActSheet->setCellValue('D'.$en_start, $v['com']);
//                  $objActSheet->setCellValue('E'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('F'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('G'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('H'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('I'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('J'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('K'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('L'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('M'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('N'.$en_start, $v['uid']);
//
                    $objActSheet->setCellValue('O'.$en_start, $v['en_technology']);
                    $objActSheet->mergeCells('O'.$en_start.':O'.$en_stop);
                    $objActSheet->setCellValue('P'.$en_start, $v['en_application']);
                    $objActSheet->mergeCells('P'.$en_start.':P'.$en_stop);
                    $objActSheet->setCellValue('Q'.$en_start, $v['en_nature']);
                    $objActSheet->mergeCells('Q'.$en_start.':Q'.$en_stop);
                    $objActSheet->setCellValue('R'.$en_start, $v['established']);
                    $objActSheet->mergeCells('R'.$en_start.':R'.$en_stop);
                    $objActSheet->setCellValue('S'.$en_start, $v['employees']);
                    $objActSheet->mergeCells('S'.$en_start.':S'.$en_stop);
                    $objActSheet->setCellValue('T'.$en_start, $v['en_address']);
                    $objActSheet->mergeCells('T'.$en_start.':T'.$en_stop);
                    $objActSheet->setCellValue('U'.$en_start, $v['phone']);
                    $objActSheet->mergeCells('U'.$en_start.':U'.$en_stop);
                    $objActSheet->setCellValue('V'.$en_start, $v['fax']);
                    $objActSheet->mergeCells('V'.$en_start.':V'.$en_stop);
                    $objActSheet->setCellValue('W'.$en_start, $v['email']);
                    $objActSheet->mergeCells('W'.$en_start.':W'.$en_stop);
                    $objActSheet->setCellValue('X'.$en_start, $v['website']);
                    $objActSheet->mergeCells('X'.$en_start.':X'.$en_stop);
                    $objActSheet->setCellValue('Y'.$en_start, $v['longitude']);
                    $objActSheet->mergeCells('Y'.$en_start.':Y'.$en_stop);
                    $objActSheet->setCellValue('Z'.$en_start, $v['latitude']);
                    $objActSheet->mergeCells('Z'.$en_start.':Z'.$en_stop);
                    $objActSheet->setCellValue('AA'.$en_start, $v['en_park']);
                    $objActSheet->mergeCells('AA'.$en_start.':AA'.$en_stop);
                    $objActSheet->setCellValue('AB'.$en_start, $v['en_city']);
                    $objActSheet->mergeCells('AB'.$en_start.':AB'.$en_stop);
                    $objActSheet->setCellValue('AC'.$en_start, $v['en_description']);
                    $objActSheet->mergeCells('AC'.$en_start.':AC'.$en_stop);

                    $num += $company[$k]['total_rows'] * 2;                         //下一公司的起始行数
                }
            }
        }
        //*************************************   
        //设置单元格样式   
        //

        //设置主标题字体  
        $objStyleA1 = $objActSheet->getStyle('A1'); 
        $objFontA1 = $objStyleA1->getFont();   
        $objFontA1->setName('宋体');   
        $objFontA1->setSize(14);   
        //$objFontA1->setBold(false);   
        //$objFontA1->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);   
        //$objFontA1->getColor()->setARGB('FF999999');   
        //************************************* 
        //设置表头字体   
        $objStyleA2 = $objActSheet->getStyle('A2:AC4');
        $objFontA2 = $objStyleA2->getFont();   
        $objFontA2->setName('Cambria');   
        $objFontA2->setSize(10);

        //设置填充颜色   
        $objFillA2 = $objStyleA2->getFill();   
        $objFillA2->setFillType(PHPExcel_Style_Fill::FILL_SOLID);   
        $objFillA2->getStartColor()->setARGB('B7B7B7');  

        //从指定的单元格复制样式信息.   
        //$objActSheet->duplicateStyle($objStyleA2, 'A2:AC4');
        //************************************* 
        //设置表格字体

        $objActSheet->getStyle('A1:AC'.($num-1))->getFont()->setName('Cambria');
        $objActSheet->getStyle('A1:AC'.($num-1))->getFont()->setSize(9);

        //显示网格线: 
        $objActSheet->setShowGridlines(true);

        //设置自动换行
        $objActSheet->getStyle('A1:AC'.($num-1))->getAlignment()->setWrapText(true);

        //所有垂直居中
        $objActSheet->getStyle('A1:AC'.($num-1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

        //前4行水平居中
        $objActSheet->getStyle('A1:AC4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

        //后面水平左对齐
        $objActSheet->getStyle('A5:AC'.($num-1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);

        //设置单元格边框
        $objActSheet->getStyle('A1:AC'.($num-1))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
        $objActSheet->getStyle('A1:AC'.($num-1))->getBorders()->getAllBorders()->getColor()->setARGB('000000');

        //*************************************   
        //输出内容
        //下面的路径按照你PHPExcel的路径来修改 
        //   

        $outputFileName = "output.xlsx";
        //$outputFileName = "output.xls";
        //到文件   
        //$objWriter->save($outputFileName);   
        //or   
        //到浏览器   
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");
        header('Content-Disposition:inline;filename="'.$outputFileName.'"');
        header("Content-Transfer-Encoding: binary");
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: no-cache");
        $objWriter->save('php://output');
    }

回复内容:

做php导出,需要循环输出数据到execl中,一开始写了一个,觉得时间有点长,就缩短了下,发现时间还变多了,求教这是为什么啊?谢谢了先。

原先的代码片段:

<code>//归总每个一级分类下的二级分类
foreach($first_cate_array as $fkey => $fvalue){
    foreach($cate as $ck=>$cv){                             
        if($cv['parentid'] == $fvalue['id']){
            $first_cate_array[$fkey]['second_cate'][] = $cv;
        }
    }

    //获得每个一级分类下二级分类的数目
    $second_count = count($first_cate_array[$fkey]['second_cate']); 
    $first_cate_array[$fkey]['second_count'] = $second_count == 0 ? 1 : $second_count;  
}

/*************************************************************************/
foreach($first_cate_array as $fk => $fv){
    //一级目录起始行数
    if($fk == 0){
        $stapos = $num;
        $en_stapos = $stapos+$cate_count;
    }else{
        $stapos = $stapos+$first_cate_array[$fk-1]['second_count'];
        $en_stapos = $stapos+$cate_count;
    }

    foreach($fv['second_cate'] as $sck => $scv){
        //二级目录起始行数
        $stapos1 = $stapos+$sck;
        $en_stapos1 = $en_stapos+$sck;
        foreach($scv['pro'] as $spk => $spv){
            $str1 = 70+$spk*3;
            $str1 = chr($str1);
            $str2 = 71+$spk*3;
            $str2 = chr($str2);
            $str3 = 72+$spk*3;
            $str3 = chr($str3);
            //中文
            $collect = $spv['name'].'('.$spv['description'].')';
            $objActSheet->setCellValue($str1.$stapos1, $collect);
            $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
            $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
            //英文
            $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
            $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
            $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
            $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
        }
        //中文
        $objActSheet->setCellValue('E'.$stapos1, $scv['category']);
        //英文
        $objActSheet->setCellValue('E'.$en_stapos1, $scv['en_category']);
    }
    //中文
    $objActSheet->setCellValue('D'.$stapos, $fv['category']);
    $stopos = $stapos + $fv['second_count'] - 1;
    $mergecellstr = 'D'.$stapos.':D'.$stopos;
    $objActSheet->mergeCells($mergecellstr);
    //英文
    $objActSheet->setCellValue('D'.$en_stapos, $fv['en_category']);
    $en_stopos = $en_stapos + $fv['second_count'] - 1;
    $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
    $objActSheet->mergeCells($en_mergecellstr);
}
</code>

修改以后的片段:

<code>$second_count = 0;
//归总每个一级分类下的二级分类
foreach($first_cate_array as $fkey => $fvalue){
    //一级目录起始行数
    $stapos = $num+$second_count;
    $en_stapos = $stapos+$cate_count;
    $second_stapos = 0;
    foreach($cate as $ck=>$cv){
        if($cv['parentid'] == $fvalue['id']){
            //二级目录起始行数
            $stapos1 = $stapos+$second_stapos;
            $en_stapos1 = $en_stapos+$second_stapos;                                    
            foreach($cv['pro'] as $spk => $spv){
                $str1 = 70+$spk*3;
                $str1 = chr($str1);
                $str2 = 71+$spk*3;
                $str2 = chr($str2);
                $str3 = 72+$spk*3;
                $str3 = chr($str3);
                //中文
                $collect = $spv['name'].'('.$spv['description'].')';
                $objActSheet->setCellValue($str1.$stapos1, $collect);
                $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
                $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
                //英文
                $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
                $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
                $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
                $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
            }
            //中文
            $objActSheet->setCellValue('E'.$stapos1, $cv['category']);
            //英文
            $objActSheet->setCellValue('E'.$en_stapos1, $cv['en_category']);
            $second_stapos ++ ;
            $second_count ++ ;
        }
    }                           
    //中文
    $objActSheet->setCellValue('D'.$stapos, $fvalue['category']);
    $stopos = $num + $second_count - 1;
    $mergecellstr = 'D'.$stapos.':D'.$stopos;
    $objActSheet->mergeCells($mergecellstr);
    //英文
    $objActSheet->setCellValue('D'.$en_stapos, $fvalue['en_category']);
    $en_stopos = $num + $cate_count + $second_count - 1;
    $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
    $objActSheet->mergeCells($en_mergecellstr);
}
</code>

我觉得原先的代码多一个上面的循环,时间应该多一点。。。查询1700条数据耗时84s。。。 下面附上全文代码:

<code class="lang-php">    /**
     * 导出Execl
     */
    public function export(){
        import("@.ORG.PhpExcel");
        //import("Lib.ORG.PHPExcel.IOFactory",APP_PATH,".php");
        import("Lib.ORG.PHPExcel.Writer.Excel5",APP_PATH,".php");
        import("Lib.ORG.PHPExcel.Writer.Excel2007",APP_PATH,".php");

        // 创建一个处理对象实例   
        $objPHPExcel = new PHPExcel();   

        // 创建文件格式写入对象实例, uncomment   
        //$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);                // 用于其他版本格式   
        // or   
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);               // 用于 2007 格式   
        //$objWriter->setOffice2003Compatibility(true);   

        //*************************************   
        //设置文档基本属性   
//      $objProps = $objPHPExcel->getProperties();   
//      $objProps->setCreator("Test");                                          //创建人
//      $objProps->setLastModifiedBy("Test");                                   //最后修改人
//      $objProps->setTitle("Office XLS Test Document");                        //标题
//      $objProps->setSubject("Office XLS Test Document, Demo");                //题目
//      $objProps->setDescription("Test document, generated by PHPExcel.");     //描述
//      $objProps->setKeywords("office excel PHPExcel");                        //关键字
//      $objProps->setCategory("Test");                                         //种类

        //*************************************   
        //设置当前的sheet索引,用于后续的内容操作。   
        //一般只有在使用多个sheet的时候才需要显示调用。   
        //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0   
        $objPHPExcel->setActiveSheetIndex(0);   

        $objActSheet = $objPHPExcel->getActiveSheet();   

        //设置当前活动sheet的名称   
        //$objActSheet->setTitle('测试Sheet');

        //*************************************  
        //设置单元格内容   
        //   
        //由PHPExcel根据传入内容自动判断单元格内容类型   
        //$objActSheet->setCellValue('A1', '字符串内容');                        // 字符串内容   
        //$objActSheet->setCellValue('A2', 26);                                 // 数值   
        //$objActSheet->setCellValue('A3', true);                               // 布尔值   
        //$objActSheet->setCellValue('A4', '=SUM(A2:A2)');                      // 公式     

        //填入主标题
        $objActSheet->setCellValue('A1', '电子地图');
        $objActSheet->mergeCells('A1:AC1');
        //设置表头行高
        $objActSheet->getRowDimension(1)->setRowHeight(20);

        $objActSheet->setCellValue('A2', '序号');
        $objActSheet->mergeCells('A2:A4');   
        $objActSheet->setCellValue('B2', '公司名称');
        $objActSheet->mergeCells('B2:B4');  
        $objActSheet->setCellValue('C2', '简称');
        $objActSheet->mergeCells('C2:C4'); 
        $objActSheet->setCellValue('D2', '产品与技术');
        $objActSheet->mergeCells('D2:N2'); 
        $objActSheet->setCellValue('O2', '相关信息');
        $objActSheet->mergeCells('O2:S2');
        $objActSheet->setCellValue('T2', '联系信息');
        $objActSheet->mergeCells('T2:AB2');
        $objActSheet->setCellValue('AC2', '描述');
        $objActSheet->mergeCells('AC2:AC4');

        $objActSheet->setCellValue('D3', '领域');
        $objActSheet->mergeCells('D3:E3');
        $objActSheet->setCellValue('F3', '产品');
        $objActSheet->mergeCells('F3:N3');
        $objActSheet->setCellValue('O3', '技术');
        $objActSheet->mergeCells('O3:O4');
        $objActSheet->setCellValue('P3', '应用');
        $objActSheet->mergeCells('P3:P4');
        $objActSheet->setCellValue('Q3', '性质');
        $objActSheet->mergeCells('Q3:Q4');
        $objActSheet->setCellValue('R3', '成立时间');
        $objActSheet->mergeCells('R3:R4');
        $objActSheet->setCellValue('S3', '员工数');
        $objActSheet->mergeCells('S3:S4');
        $objActSheet->setCellValue('T3', '地址');
        $objActSheet->mergeCells('T3:T4');
        $objActSheet->setCellValue('U3', '电话');
        $objActSheet->mergeCells('U3:U4');
        $objActSheet->setCellValue('V3', '传真');
        $objActSheet->mergeCells('V3:V4');
        $objActSheet->setCellValue('W3', 'eMail');
        $objActSheet->mergeCells('W3:W4');
        $objActSheet->setCellValue('X3', '网站');
        $objActSheet->mergeCells('X3:X4');
        $objActSheet->setCellValue('Y3', '经度');
        $objActSheet->mergeCells('Y3:Y4');
        $objActSheet->setCellValue('Z3', '纬度');
        $objActSheet->mergeCells('Z3:Z4');
        $objActSheet->setCellValue('AA3', '园区');
        $objActSheet->mergeCells('AA3:AA4');
        $objActSheet->setCellValue('AB3', '城市');
        $objActSheet->mergeCells('AB3:AB4');

        $objActSheet->setCellValue('D4', '一级');
        $objActSheet->setCellValue('E4', '二级');
        $objActSheet->setCellValue('F4', '1');
        $objActSheet->setCellValue('G4', '品名');
        $objActSheet->setCellValue('H4', '描述');
        $objActSheet->setCellValue('I4', '2');
        $objActSheet->setCellValue('J4', '品名');
        $objActSheet->setCellValue('K4', '描述');
        $objActSheet->setCellValue('L4', '3');
        $objActSheet->setCellValue('M4', '品名');     
        $objActSheet->setCellValue('N4', '描述');

        //*************************************   
        //搜索条件
        $company_where = 1;
        $keyword = trim($_GET['keyword']);
        if($_GET['sub_category'] || $_GET['first_cid']){
            $c_uid =getuidbycate();
        }
        if($_GET['product_id']){
            $p_uid =getuidbypro($_GET['product_id']);
        }
        $uid_arr = $p_uid?array_intersect($c_uid,$p_uid):$c_uid;
        $uid_str = implode(',',$uid_arr);
        if($_GET['sub_category'] || $_GET['first_cid'] || $_GET['product_id']){
            $company_where .= ' and uid in('.$uid_str.')';
        }
        if($keyword){
            $company_where .= " and company like '%$keyword%'";
        }

        $num = 5;       //初始行数

        //公司信息  
        $company = $this->Company->field('')->where($company_where)->select();
        if($company){
            foreach((array)$company as $k => $v){
                if($v['uid']){
                    //获取产品
                    $pro = $this->Product->table(tname('product').' AS pr')->join(tname('company_product').' AS cp ON pr.id=cp.pid')->field('')->where('cp.uid='.$v['uid'])->group('pr.id')->select();
                    $company[$k]['pid'] = $pro;
                    //获取二级分类
                    $join = tname('company_category').' AS cc ON ca.id=cc.cid';
                    $field = ''; 
                    $where = "cc.uid=".$v['uid'];
                    $cate = $this->Category->table(tname('category').' AS ca')->join($join)->field($field)->where($where)->group('ca.id')->select();
                    if($cate){
                        $cate_count = count($cate);
                        $second_cate = '';
                        $first_cate_array = '';
                        foreach($cate as $k1=>$v1){
                            //获取一级分类
                            $first_cate = $this->Category->where('id='.$v1['parentid'])->find();
                            //归总公司的一级分类
                            if(!in_array($first_cate,$first_cate_array)){
                                $first_cate_array[] = $first_cate;
                            }
                            //归类二级分类下的产品
                            foreach($pro as $pk => $pv){
                                if($pv['cid'] == $v1['cid']){
                                    $cate[$k1]['pro'][] = $pv;
                                }
                            }
                        }

                        /**************************************************************************/
//                      $second_count = 0;
//                      //归总每个一级分类下的二级分类
//                      foreach($first_cate_array as $fkey => $fvalue){
//                          //一级目录起始行数
//                          $stapos = $num+$second_count;
//                          $en_stapos = $stapos+$cate_count;
//                          $second_stapos = 0;
//                          foreach($cate as $ck=>$cv){
//                              if($cv['parentid'] == $fvalue['id']){
//                                  //二级目录起始行数
//                                  $stapos1 = $stapos+$second_stapos;
//                                  $en_stapos1 = $en_stapos+$second_stapos;                                    
//                                  foreach($cv['pro'] as $spk => $spv){
//                                      $str1 = 70+$spk*3;
//                                      $str1 = chr($str1);
//                                      $str2 = 71+$spk*3;
//                                      $str2 = chr($str2);
//                                      $str3 = 72+$spk*3;
//                                      $str3 = chr($str3);
//                                      //中文
//                                      $collect = $spv['name'].'('.$spv['description'].')';
//                                      $objActSheet->setCellValue($str1.$stapos1, $collect);
//                                      $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
//                                      $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
//                                      //英文
//                                      $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
//                                      $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
//                                      $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
//                                      $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
//                                  }
//                                  //中文
//                                  $objActSheet->setCellValue('E'.$stapos1, $cv['category']);
//                                  //英文
//                                  $objActSheet->setCellValue('E'.$en_stapos1, $cv['en_category']);
//                                  $second_stapos ++ ;
//                                  $second_count ++ ;
//                              }
//                          }                           
//                          //中文
//                          $objActSheet->setCellValue('D'.$stapos, $fvalue['category']);
//                          $stopos = $num + $second_count - 1;
//                          $mergecellstr = 'D'.$stapos.':D'.$stopos;
//                          $objActSheet->mergeCells($mergecellstr);
//                          //英文
//                          $objActSheet->setCellValue('D'.$en_stapos, $fvalue['en_category']);
//                          $en_stopos = $num + $cate_count + $second_count - 1;
//                          $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
//                          $objActSheet->mergeCells($en_mergecellstr);
//                      }

                        /**************************************************************************/

                        //归总每个一级分类下的二级分类
                        foreach($first_cate_array as $fkey => $fvalue){
                            foreach($cate as $ck=>$cv){                             
                                if($cv['parentid'] == $fvalue['id']){
                                    $first_cate_array[$fkey]['second_cate'][] = $cv;
                                }
                            }

                            //获得每个一级分类下二级分类的数目
                            $second_count = count($first_cate_array[$fkey]['second_cate']); 
                            $first_cate_array[$fkey]['second_count'] = $second_count == 0 ? 1 : $second_count;  
                        }

                        /*************************************************************************/
                        foreach($first_cate_array as $fk => $fv){
                            //一级目录起始行数
                            if($fk == 0){
                                $stapos = $num;
                                $en_stapos = $stapos+$cate_count;
                            }else{
                                $stapos = $stapos+$first_cate_array[$fk-1]['second_count'];
                                $en_stapos = $stapos+$cate_count;
                            }

                            foreach($fv['second_cate'] as $sck => $scv){
                                //二级目录起始行数
                                $stapos1 = $stapos+$sck;
                                $en_stapos1 = $en_stapos+$sck;
                                foreach($scv['pro'] as $spk => $spv){
                                    $str1 = 70+$spk*3;
                                    $str1 = chr($str1);
                                    $str2 = 71+$spk*3;
                                    $str2 = chr($str2);
                                    $str3 = 72+$spk*3;
                                    $str3 = chr($str3);
                                    //中文
                                    $collect = $spv['name'].'('.$spv['description'].')';
                                    $objActSheet->setCellValue($str1.$stapos1, $collect);
                                    $objActSheet->setCellValue($str2.$stapos1, $spv['name']);
                                    $objActSheet->setCellValue($str3.$stapos1, $spv['description']);
                                    //英文
                                    $en_collect = $spv['en_name'].'('.$spv['en_description'].')';
                                    $objActSheet->setCellValue($str1.$en_stapos1, $en_collect);
                                    $objActSheet->setCellValue($str2.$en_stapos1, $spv['en_name']);
                                    $objActSheet->setCellValue($str3.$en_stapos1, $spv['en_description']);
                                }
                                //中文
                                $objActSheet->setCellValue('E'.$stapos1, $scv['category']);
                                //英文
                                $objActSheet->setCellValue('E'.$en_stapos1, $scv['en_category']);
                            }
                            //中文
                            $objActSheet->setCellValue('D'.$stapos, $fv['category']);
                            $stopos = $stapos + $fv['second_count'] - 1;
                            $mergecellstr = 'D'.$stapos.':D'.$stopos;
                            $objActSheet->mergeCells($mergecellstr);
                            //英文
                            $objActSheet->setCellValue('D'.$en_stapos, $fv['en_category']);
                            $en_stopos = $en_stapos + $fv['second_count'] - 1;
                            $en_mergecellstr = 'D'.$en_stapos.':D'.$en_stopos;
                            $objActSheet->mergeCells($en_mergecellstr);
                        }
                        $company[$k]['first_cid'] = $first_cate_array;
                    }
                    //$company[$k]['first_count'] = count($company[$k]['first_cid']);
                    //获得二级分类的总数目
                    $company[$k]['total_rows'] = count($cate);

                    //园区
                    if($v['park']){
                        $park = my_explode($v['park']);
                        $company[$k]['park'] = my_arrytostr(array_unique($park),'Park','name');
                        $company[$k]['en_park'] = my_arrytostr(array_unique($park),'Park','en_name');
                    }else{
                        $v['park'] = '';
                        $v['en_park'] = '';
                    }
                    //城市
                    if($v['city']){
                        $city = C('CITY');
                        foreach($city as $ck=>$cv){
                            if($v['city'] == $cv['id']){
                                $v['city'] = $cv['name'];
                                $v['en_city'] = $cv['en_name'];
                            }
                        }
                    }

                    $total_rows = $company[$k]['total_rows'] == 0 ? 1 : $company[$k]['total_rows'];
                    //中文*************************************   
                    $stop = $num - 1 + $total_rows;

                    $objActSheet->setCellValue('A'.$num, $v['uid']);
                    $objActSheet->mergeCells('A'.$num.':A'.$stop);
                    $objActSheet->setCellValue('B'.$num, $v['company']);
                    $objActSheet->mergeCells('B'.$num.':B'.$stop);
                    $objActSheet->setCellValue('C'.$num, $v['com']);
                    $objActSheet->mergeCells('C'.$num.':C'.$stop);
//
//                  $objActSheet->setCellValue('D'.$num, $v['com']);
//                  $objActSheet->setCellValue('E'.$num, $v['uid']);
//                  $objActSheet->setCellValue('F'.$num, $v['uid']);
//                  $objActSheet->setCellValue('G'.$num, $v['uid']);
//                  $objActSheet->setCellValue('H'.$num, $v['uid']);
//                  $objActSheet->setCellValue('I'.$num, $v['uid']);
//                  $objActSheet->setCellValue('J'.$num, $v['uid']);
//                  $objActSheet->setCellValue('K'.$num, $v['uid']);
//                  $objActSheet->setCellValue('L'.$num, $v['uid']);
//                  $objActSheet->setCellValue('M'.$num, $v['uid']);
//                  $objActSheet->setCellValue('N'.$num, $v['uid']);
//
                    $objActSheet->setCellValue('O'.$num, $v['technology']);
                    $objActSheet->mergeCells('O'.$num.':O'.$stop);
                    $objActSheet->setCellValue('P'.$num, $v['application']);
                    $objActSheet->mergeCells('P'.$num.':P'.$stop);
                    $objActSheet->setCellValue('Q'.$num, $v['nature']);
                    $objActSheet->mergeCells('Q'.$num.':Q'.$stop);
                    $objActSheet->setCellValue('R'.$num, $v['established']);
                    $objActSheet->mergeCells('R'.$num.':R'.$stop);
                    $objActSheet->setCellValue('S'.$num, $v['employees']);
                    $objActSheet->mergeCells('S'.$num.':S'.$stop);
                    $objActSheet->setCellValue('T'.$num, $v['address']);
                    $objActSheet->mergeCells('T'.$num.':T'.$stop);
                    $objActSheet->setCellValue('U'.$num, $v['phone']);
                    $objActSheet->mergeCells('U'.$num.':U'.$stop);
                    $objActSheet->setCellValue('V'.$num, $v['fax']);
                    $objActSheet->mergeCells('V'.$num.':V'.$stop);
                    $objActSheet->setCellValue('W'.$num, $v['email']);
                    $objActSheet->mergeCells('W'.$num.':W'.$stop);
                    $objActSheet->setCellValue('X'.$num, $v['website']);
                    $objActSheet->mergeCells('X'.$num.':X'.$stop);
                    $objActSheet->setCellValue('Y'.$num, $v['longitude']);
                    $objActSheet->mergeCells('Y'.$num.':Y'.$stop);
                    $objActSheet->setCellValue('Z'.$num, $v['latitude']);
                    $objActSheet->mergeCells('Z'.$num.':Z'.$stop);
                    $objActSheet->setCellValue('AA'.$num, $v['park']);
                    $objActSheet->mergeCells('AA'.$num.':AA'.$stop);
                    $objActSheet->setCellValue('AB'.$num, $v['city']);
                    $objActSheet->mergeCells('AB'.$num.':AB'.$stop);
                    $objActSheet->setCellValue('AC'.$num, $v['description']);
                    $objActSheet->mergeCells('AC'.$num.':AC'.$stop);

                    //英文*************************************   
                    $en_start = $num + $total_rows;
                    $en_stop = $en_start - 1 + $total_rows;

                    $objActSheet->setCellValue('A'.$en_start, $v['uid']);
                    $objActSheet->mergeCells('A'.$en_start.':A'.$en_stop);
                    $objActSheet->setCellValue('B'.$en_start, $v['en_company']);
                    $objActSheet->mergeCells('B'.$en_start.':B'.$en_stop);
                    $objActSheet->setCellValue('C'.$en_start, $v['en_com']);
                    $objActSheet->mergeCells('C'.$en_start.':C'.$en_stop);
//
//                  $objActSheet->setCellValue('D'.$en_start, $v['com']);
//                  $objActSheet->setCellValue('E'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('F'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('G'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('H'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('I'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('J'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('K'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('L'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('M'.$en_start, $v['uid']);
//                  $objActSheet->setCellValue('N'.$en_start, $v['uid']);
//
                    $objActSheet->setCellValue('O'.$en_start, $v['en_technology']);
                    $objActSheet->mergeCells('O'.$en_start.':O'.$en_stop);
                    $objActSheet->setCellValue('P'.$en_start, $v['en_application']);
                    $objActSheet->mergeCells('P'.$en_start.':P'.$en_stop);
                    $objActSheet->setCellValue('Q'.$en_start, $v['en_nature']);
                    $objActSheet->mergeCells('Q'.$en_start.':Q'.$en_stop);
                    $objActSheet->setCellValue('R'.$en_start, $v['established']);
                    $objActSheet->mergeCells('R'.$en_start.':R'.$en_stop);
                    $objActSheet->setCellValue('S'.$en_start, $v['employees']);
                    $objActSheet->mergeCells('S'.$en_start.':S'.$en_stop);
                    $objActSheet->setCellValue('T'.$en_start, $v['en_address']);
                    $objActSheet->mergeCells('T'.$en_start.':T'.$en_stop);
                    $objActSheet->setCellValue('U'.$en_start, $v['phone']);
                    $objActSheet->mergeCells('U'.$en_start.':U'.$en_stop);
                    $objActSheet->setCellValue('V'.$en_start, $v['fax']);
                    $objActSheet->mergeCells('V'.$en_start.':V'.$en_stop);
                    $objActSheet->setCellValue('W'.$en_start, $v['email']);
                    $objActSheet->mergeCells('W'.$en_start.':W'.$en_stop);
                    $objActSheet->setCellValue('X'.$en_start, $v['website']);
                    $objActSheet->mergeCells('X'.$en_start.':X'.$en_stop);
                    $objActSheet->setCellValue('Y'.$en_start, $v['longitude']);
                    $objActSheet->mergeCells('Y'.$en_start.':Y'.$en_stop);
                    $objActSheet->setCellValue('Z'.$en_start, $v['latitude']);
                    $objActSheet->mergeCells('Z'.$en_start.':Z'.$en_stop);
                    $objActSheet->setCellValue('AA'.$en_start, $v['en_park']);
                    $objActSheet->mergeCells('AA'.$en_start.':AA'.$en_stop);
                    $objActSheet->setCellValue('AB'.$en_start, $v['en_city']);
                    $objActSheet->mergeCells('AB'.$en_start.':AB'.$en_stop);
                    $objActSheet->setCellValue('AC'.$en_start, $v['en_description']);
                    $objActSheet->mergeCells('AC'.$en_start.':AC'.$en_stop);

                    $num += $company[$k]['total_rows'] * 2;                         //下一公司的起始行数
                }
            }
        }
        //*************************************   
        //设置单元格样式   
        //

        //设置主标题字体  
        $objStyleA1 = $objActSheet->getStyle('A1'); 
        $objFontA1 = $objStyleA1->getFont();   
        $objFontA1->setName('宋体');   
        $objFontA1->setSize(14);   
        //$objFontA1->setBold(false);   
        //$objFontA1->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);   
        //$objFontA1->getColor()->setARGB('FF999999');   
        //************************************* 
        //设置表头字体   
        $objStyleA2 = $objActSheet->getStyle('A2:AC4');
        $objFontA2 = $objStyleA2->getFont();   
        $objFontA2->setName('Cambria');   
        $objFontA2->setSize(10);

        //设置填充颜色   
        $objFillA2 = $objStyleA2->getFill();   
        $objFillA2->setFillType(PHPExcel_Style_Fill::FILL_SOLID);   
        $objFillA2->getStartColor()->setARGB('B7B7B7');  

        //从指定的单元格复制样式信息.   
        //$objActSheet->duplicateStyle($objStyleA2, 'A2:AC4');
        //************************************* 
        //设置表格字体

        $objActSheet->getStyle('A1:AC'.($num</code>
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP行动:现实世界中的示例和应用程序PHP行动:现实世界中的示例和应用程序Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:轻松创建交互式Web内容PHP:轻松创建交互式Web内容Apr 14, 2025 am 12:15 AM

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python:比较两种流行的编程语言PHP和Python:比较两种流行的编程语言Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP的持久相关性:它还活着吗?PHP的持久相关性:它还活着吗?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP的当前状态:查看网络开发趋势PHP的当前状态:查看网络开发趋势Apr 13, 2025 am 12:20 AM

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP与其他语言:比较PHP与其他语言:比较Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP与Python:核心功能PHP与Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP:网络开发的关键语言PHP:网络开发的关键语言Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能