猿问

phpexecl导出 循环时间问题

做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;
$uid_str=implode(',',$uid_arr);
if($_GET['sub_category']||$_GET['first_cid']||$_GET['product_id']){
$company_where.='anduidin('.$uid_str.')';
}
if($keyword){
$company_where.="andcompanylike'%$keyword%'";
}
$num=5;//初始行数
//公司信息
$company=$this->Company->field('')->where($company_where)->select();
if($company){
foreach((array)$companyas$k=>$v){
if($v['uid']){
//获取产品
$pro=$this->Product->table(tname('product').'ASpr')->join(tname('company_product').'AScpONpr.id=cp.pid')->field('')->where('cp.uid='.$v['uid'])->group('pr.id')->select();
$company[$k]['pid']=$pro;
//获取二级分类
$join=tname('company_category').'ASccONca.id=cc.cid';
$field='';
$where="cc.uid=".$v['uid'];
$cate=$this->Category->table(tname('category').'ASca')->join($join)->field($field)->where($where)->group('ca.id')->select();
if($cate){
$cate_count=count($cate);
$second_cate='';
$first_cate_array='';
foreach($cateas$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($proas$pk=>$pv){
if($pv['cid']==$v1['cid']){
$cate[$k1]['pro'][]=$pv;
}
}
}
/**************************************************************************/
//$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);
//}
/**************************************************************************/
//归总每个一级分类下的二级分类
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);
}
$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($cityas$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,26Jul199705:00:00GMT");
header("Last-Modified:".gmdate("D,dMYH:i:s")."GMT");
header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
header("Pragma:no-cache");
$objWriter->save('php://output');
}
守候你守候我
浏览 362回答 2
2回答

至尊宝的传说

foreach的多少不是影响性能的主因,而你foreach很多次一个耗时很长的代码就会直接增加运行时间。你修改代码后,好像遍历次数还比之前多了,你要检查程序的嵌套及循环体的合理性。代码看上去比较乱,你要把功能分块并对块进行概要的注释,才容易让人阅读。

慕仙森

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']){这个循环是可以优化的比如$first_cate_array=array(array('id'=>1),array('id'=>2));$cate=array(array('sid'=>1,'parentid'=>2),array('sid'=>2,'parentid'=>4),array('sid'=>3,'parentid'=>2));$cate2=array(2=>array(array('sid'=>1,'parentid'=>2),array('sid'=>3,'parentid'=>2)),4=>array('sid'=>2,'parentid'=>4));foreach($first_cate_arrayas$k=>$v){if(!empty($cate2[$v['id']])){}}把$cate转化成$cate2适用于嵌套循环次数比较多,foreach($cateas$ck=>$cv){的循环就可以省去
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答