Advertisement
AndreyKlipikov

MySQL to Excel

Jan 31st, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.15 KB | None | 0 0
  1.     public function actionStep1()
  2.     {
  3.         $current_city = "Ульяновск";
  4.         $categories = Category::model()->findAll();
  5.        
  6.         foreach($categories as $category)
  7.         {
  8.             mkdir("./upload/" . iconv("utf-8", "windows-1251", $current_city) . "/" . iconv("utf-8", "windows-1251", str_replace(" /", ",", $category->name) . "/"));
  9.         }
  10.        
  11.         $this->render('index');
  12.     }
  13.  
  14.     public function actionStep2()
  15.     {
  16.         $data = array();
  17.         $firms = FirmToSubcategory::model()->findAll();
  18.        
  19.         foreach($firms as $item)
  20.         {
  21.             if (!isset($data[$item->firm_id]))
  22.                 $data[$item->firm_id] = $item->subcategory_id;
  23.             else
  24.             {
  25.                 $item->delete();
  26.             }
  27.         }
  28.        
  29.         $this->render('index');
  30.     }
  31.    
  32.     public function actionStep3()
  33.     {
  34.         $current_city = "Ульяновск";
  35.         $categories = array();
  36.         $categories_list = Category::model()->findAll();
  37.        
  38.         foreach($categories_list as $item)
  39.             $categories[$item->id] = $item->name;
  40.        
  41.         $sub = Subcategory::model()->findAll();
  42.        
  43.         foreach($sub as $item)
  44.         {
  45.             $current_category = str_replace(" /", ",", $categories[$item->category_id]);
  46.             $current_subcategory = str_replace(" /", ",", $item->name);
  47.             $objPHPExcel = new PHPExcel();
  48.            
  49.             $objPHPExcel->getProperties()
  50.                 ->setCreator("Андрей Клипиков");
  51.            
  52.             $objPHPExcel->setActiveSheetIndex(0)
  53.                 ->setCellValue('A1', 'ID')
  54.                 ->setCellValue('B1', 'Название')
  55.                 ->setCellValue('C1', 'Адрес')
  56.                 ->setCellValue('D1', 'Телефоны')
  57.                 ->setCellValue('E1', 'E-mail')
  58.                 ->setCellValue('F1', 'WWW')
  59.                 ->setCellValue('G1', 'Факс')
  60.                 ->setCellValue('H1', 'Звонок')
  61.                 ->setCellValue('I1', 'Решение');
  62.            
  63.             $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
  64.             $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(50);
  65.             $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
  66.             $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);
  67.             $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);
  68.             $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(30);
  69.             $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(30);
  70.            
  71.             $ids = array();
  72.             $firms_id = FirmToSubcategory::model()->findAll(array('condition'=>'subcategory_id=' . $item->id));
  73.            
  74.             foreach($firms_id as $tmp)
  75.                 $ids[] = $tmp->firm_id;
  76.            
  77.             $criteria = new CDbCriteria();
  78.             $criteria->addInCondition("id", $ids);
  79.             $firms = Firm::model()->findAll($criteria);
  80.             $firm_number = 2;
  81.            
  82.             foreach($firms as $firm)
  83.             {
  84.                 $phones = array();
  85.                 $emails = array();
  86.                 $www = array();
  87.                 $fax = array();
  88.                 $contacts = Contacts::model()->findAll(array('condition'=>'firm_id=' . $firm->id));
  89.                
  90.                 foreach($contacts as $contact)
  91.                 {
  92.                     if ($contact->type == "mobile" || $contact->type == "phone")
  93.                         $phones[] = $contact->rawdata;
  94.                    
  95.                     if ($contact->type == "email")
  96.                         $emails[] = $contact->rawdata;
  97.                    
  98.                     if ($contact->type == "website" || $contact->type == "twitter" || $contact->type == "vkontakte" || $contact->type == "facebook" || $contact->type == "instagram")
  99.                         $www[] = $contact->rawdata;
  100.                    
  101.                     if ($contact->type == "fax")
  102.                         $fax[] = $contact->rawdata;
  103.                 }
  104.                
  105.                 $objPHPExcel->setActiveSheetIndex(0)
  106.                     ->setCellValue('A' . $firm_number, $firm->id)
  107.                     ->setCellValue('B' . $firm_number, $firm->name)
  108.                     ->setCellValue('C' . $firm_number, $firm->geometry_name . ' ' . $firm->office)
  109.                     ->setCellValue('D' . $firm_number, implode(", ", $phones))
  110.                     ->setCellValue('E' . $firm_number, implode(", ", $emails))
  111.                     ->setCellValue('F' . $firm_number, implode(", ", $www))
  112.                     ->setCellValue('G' . $firm_number, implode(", ", $fax))
  113.                     ->setCellValue('H' . $firm_number, '')
  114.                     ->setCellValue('I' . $firm_number, '');
  115.                 $firm_number++;
  116.             }
  117.            
  118.             $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  119.             $objWriter->save("./upload/" . iconv("utf-8", "windows-1251", $current_city) . "/" . iconv("utf-8", "windows-1251", $current_category) . "/" . iconv("utf-8", "windows-1251", $current_subcategory) . ".xls");
  120.         }
  121.        
  122.         $this->render('index');
  123.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement