做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>

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version
Useful JavaScript development tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),
