За последние 24 часа нас посетили 24064 программиста и 1642 робота. Сейчас ищут 745 программистов ...

PHP Excel практичный!

Тема в разделе "Прочие вопросы по PHP", создана пользователем immortal.1986, 13 ноя 2014.

  1. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    помогите дельным кодом прощу помощи!!!!
    полюбому комуто тоже нужно будет!!!

    Код (PHP):
    1. <?php
    2. require_once 'Db_ext.php';
    3. require_once 'PHPExcel.php';
    4.  
    5. $db = Db_ext::getInstance();
    6.     $res = $db->query('SELECT (id,name,age) FROM myadmin.users');
    7.         $result = $res->fetchAll(PDO::FETCH_ASSOC);
    8.  
    9. $objPHPExcel = new PHPExcel();
    10. $num = (count($result)-1);
    11.  
    12. $row_count=1;
    13. foreach($result as $data){
    14.         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row_count, $data['id']);
    15.         $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(0, $row_count)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    16.  
    17.         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row_count, $data['name']);
    18.         $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(1, $row_count)->getAlignment()->setWrapText(true);
    19.  
    20.         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row_count, $data['age']);
    21.         $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(2, $row_count)->getAlignment()->setWrapText(true);
    22.         $row_count++;
    23. }
    24.  
    25. $objPHPExcel->getActiveSheet()->setTitle('My results');
    26. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
    27. $objPHPExcel->setActiveSheetIndex(0);
    28. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    29. $filename= 'myresults-'.'1'.'.xlsx';
    30. $objWriter->save($filename);
    вот код!!!!

    он работает!!!
    ну есть мелкие нюансы!
    1) НАДО что бы первой строкой вывордились не даные а id name age
    2) а есле я сделаю другой запрос id name age email adress

    1 решил!!! а вот что со вторымума не приложу
    Код (PHP):
    1. foreach($result as $data){
    2.         if($row_count == 1){
    3.                 $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row_count, 'id');
    4.                 $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(0, $row_count)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    5.  
    6.                 $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row_count, 'name');
    7.                 $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(1, $row_count)->getAlignment()->setWrapText(true);
    8.  
    9.                 $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row_count, 'age');
    10.                 $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(2, $row_count)->getAlignment()->setWrapText(true);
    11.                 $row_count++;
    12.  
    13.         }
    14.  
    15.         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row_count, $data['id']);
    16.         $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(2, $row_count)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    17.  
    18.         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row_count, $data['name']);
    19.         $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(2, $row_count)->getAlignment()->setWrapText(true);
    20.  
    21.         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row_count, $data['age']);
    22.         $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow(2, $row_count)->getAlignment()->setWrapText(true);
    23.         $row_count++;
    24. } 
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    1 проще всего делается как
    $result = array_merge(array('id'=>'id', 'name'=>'name', 'age'=>'age'), $result) перед выводом
    А второе - да точно так же
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $row_count, $data['email']);
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $row_count, $data['address']);
    А вот этот setWrapText лучше сразу ставить для всей таблицы, чтобы не валандаться с каждой ячейкой.
     
  3. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Проще всего забить на это и сделать XML. =)