做php导出,需要循环输出数据到execl中,一开始写了一个,觉得时间有点长,就缩短了下,发现时间还变多了,求教这是为什么啊?谢谢了先。原先的代码片段://归总每个一级分类下的二级分类foreach($first_cate_arrayas$fkey=>$fvalue){foreach($cateas$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_arrayas$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);}修改以后的片段:$second_count=0;//归总每个一级分类下的二级分类foreach($first_cate_arrayas$fkey=>$fvalue){//一级目录起始行数$stapos=$num+$second_count;$en_stapos=$stapos+$cate_count;$second_stapos=0;foreach($cateas$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);}我觉得原先的代码多一个上面的循环,时间应该多一点。。。查询1700条数据耗时84s。。。下面附上全文代码:/***导出Execl*/publicfunctionexport(){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=newPHPExcel();//创建文件格式写入对象实例,uncomment//$objWriter=newPHPExcel_Writer_Excel5($objPHPExcel);//用于其他版本格式//or$objWriter=newPHPExcel_Writer_Excel2007($objPHPExcel);//用于2007格式//$objWriter->setOffice2003Compatibility(true);//*************************************//设置文档基本属性//$objProps=$objPHPExcel->getProperties();//$objProps->setCreator("Test");//创建人//$objProps->setLastModifiedBy("Test");//最后修改人//$objProps->setTitle("OfficeXLSTestDocument");//标题//$objProps->setSubject("OfficeXLSTestDocument,Demo");//题目//$objProps->setDescription("Testdocument,generatedbyPHPExcel.");//描述//$objProps->setKeywords("officeexcelPHPExcel");//关键字//$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;