mehrshaddarzi
11/6/2017 - 7:44 AM

Get Data From Db in phpExcel

Get Data From Db in phpExcel

<?php

/* Col Name*/
function createColumnsArray($end_column, $first_letters = '')
{
  $columns = array();
  $length = strlen($end_column);
  $letters = range('A', 'Z');
  

  // Iterate over 26 letters.
  foreach ($letters as $letter) {
	  
	
	  
      // Paste the $first_letters before the next.
      $column = $first_letters . $letter;

      // Add the column to the final array.
      $columns[] = $column;

      // If it was the end column that was added, return the columns.
      if ($column == $end_column)
          return $columns;
  }

  // Add the column children.
  foreach ($columns as $column) {
      // Don't itterate if the $end_column was already set in a previous itteration.
      // Stop iterating if you've reached the maximum character length.
      if (!in_array($end_column, $columns) && strlen($column) < $length) {
          $new_columns = createColumnsArray($end_column, $column);
          // Merge the new columns which were created with the final columns array.
          $columns = array_merge($columns, $new_columns);
      }
  }


	//start with ket=>1 in php
	$export_array = $columns;
	$export_array = array_filter(array_merge(array(0), $export_array));
	
  
  return $export_array;
}

/* PHPExcel export */
function phpexcel($sheetname,$field,$data,$file_pishvand = false,$auto_row = false) {

    /*Example
    $f = array(
        array("name" => "esm", "size" => "", "link" => "yes"),
        array("name" => "email", "size" => "auto", "link" => "no"),
        array("name" => "سال", "size" => "auto", "link" => "no"),
    );
    $data = array(
    array("View profile|||http://www.irwebdesign.ir","mehrshadhjg198@gmail.com","28"),
    array("View profile|||http://www.mehdi.net","mehrshad198@gmail.com","45"),
    );

    echo phpexcel("me",$f,$data);
    */
    /** Include PHPExcel */
    require_once (trailingslashit(ABSPATH).'wp-content/plugins/wp-maskan/phpexcel/PHPExcel.php');

// Create new PHPExcel object
    $objPHPExcel = new PHPExcel();

// Set document properties
    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
        ->setLastModifiedBy("Maarten Balliauw")
        ->setTitle("Office 2007 XLSX Test Document")
        ->setSubject("Office 2007 XLSX Test Document")
        ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
        ->setKeywords("office 2007 openxml php")
        ->setCategory("Test result file");

// Rename worksheet
    $objPHPExcel->getActiveSheet()->setTitle($sheetname);
    $objPHPExcel->getActiveSheet()->setRightToLeft(true);
    $objPHPExcel->getDefaultStyle()->getFont()->setName('tahoma')->setSize(11);

    $objPHPExcel->getActiveSheet()
        ->getStyle('A1:Z1')
        ->applyFromArray(
            array(
                'fill' => array(
                    'type' => PHPExcel_Style_Fill::FILL_SOLID,
                    'color' => array('rgb' => '18A689')
                ),
            )
        );
    $objPHPExcel->getActiveSheet()->getStyle('A1:Z1')->applyFromArray(array('font' => array('color' => array('rgb' => 'ffffff'))));
    $objPHPExcel->setActiveSheetIndex(0);

//Array
    $arr= createColumnsArray('CC');
    $link = array();
    $head = array();

    if($auto_row) { $head[] = $auto_row;  $x=1; } else { $x = 0;}

    foreach($field as $header) {
        $head[] = $header['name'];
        if($header['link'] =="yes") {
            $link[] = $x;
        }
        $x++;
    }
    $objPHPExcel->getActiveSheet()->fromArray($head, null, 'A1');

//add auto number in data
    if($auto_row) {
        for($m=0; $m<count($data); $m++) {
            array_unshift($data[$m],($m + 1));
        }
    }

//replace link data
    if(count($link >0)) {
        $list_link = array();
        for($z=0; $z<count($data); $z++) {
            foreach($link as $p) {
                $new_array=explode("|||",$data[$z][$p]); //[0] view [1] link
                $list_link[$z] = $new_array[1];
                $data[$z][$p] = $new_array[0];
            }
        }
    }

    $objPHPExcel->getActiveSheet()->fromArray($data, null, 'A2');

//set link for data
    if(count($link >0)) {
        for($q=1; $q<=count($data); $q++) {
            foreach($link as $p) {

                //if auto number
                $objPHPExcel->getActiveSheet()->getCell($arr[$p + 1].($q + 1))->getHyperlink()->setUrl($list_link[$q - 1]);
                $objPHPExcel->getActiveSheet()->getStyle($arr[$p + 1].($q + 1))->applyFromArray(array('font' => array('color' => array('rgb' => '0000ff'))));

            }
        }
    }

//setu auto size
    if($auto_row) { $objPHPExcel->getActiveSheet()->getColumnDimension($arr[1])->setAutoSize(true); $t = 2; } else { $t = 1; }
    foreach($field as $header) {
        if($header['size'] =="auto") {
            $objPHPExcel->getActiveSheet()->getColumnDimension($arr[$t])->setAutoSize(true);
        }
        $t++;
    }
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

    //save file
    $upload_dir = wp_upload_dir(); // Grab uploads folder array
    $dir = trailingslashit( $upload_dir['basedir'] ) . 'excel/'; // Set storage directory path
	
	//Remove All file From this directory
	foreach(glob($dir.'*.*') as $v){
		@unlink($v);
	}
	
    if($file_pishvand) {
        $pish = $file_pishvand;
    } else {
        $pish = "CMS-Excel";
    }
    $file_name = $pish."-".date('Y-m-d-His').".xls";

    $objWriter->save($dir.$file_name);
    return home_url().'/wp-content/uploads/excel/'.$file_name;
    wp_die();
}
<?php

   //load phpexcel
        require_once ('phpexcel.php');

        $list_field = array(
            array("name" => "تاریخ ثبت نام", "size" => "auto", "link" => "no"),
            array("name" => "آی پی کاربر", "size" => "auto", "link" => "no"),
            array("name" => "کد رهگیری", "size" => "auto", "link" => "no"),
        );

        $list_col_table = array();

        $Query = $wpdb->get_results("SELECT * FROM `".TABLE_AR_HELP."` ORDER BY id ASC LIMIT 3,4", ARRAY_A);
        foreach ( $Query as $row ) {
            for ($i=$row['from'];$i<=$row['to'];$i++) {
                $list_col_table[] = wp_get_col_name($i-1);
                $col_comment = wp_get_col_comment($i-1);
                $list_field[]= array("name" => $col_comment, "size" => "auto", "link" => "no");
            } //End for
        }

        //remove last item
        //array_pop($list_field);
        //array_pop($list_col_table);
	    $list_field[]= array("name" => "لینک آخرین خبر", "size" => "auto", "link" => "no");
	    $list_field[]= array("name" => "تعداد اعضای گروه/کانال", "size" => "auto", "link" => "no");


        //data for  excel
        $data = array();

        if($_GET['excel_id'] =="ALL") {
            $sql = "SELECT * FROM ra_list";
        } else {
            $sql = "SELECT * FROM ra_list where cid={$_GET['excel_id']}";
        }
        $query = $wpdb->get_results($sql, ARRAY_A);

        foreach ( $query as $row ) {

            $field = array(
                parsidate('l j F Y ساعت H:i',$row['data-reg'],$lang='per'),
                $row['ip'],
                $row['code-rahgiry']
            );

            foreach($list_col_table as $item) {
                if($item =="cid") {

                	if($row['type'] =="منزل") {
		                $field[] = "-";
	                } else {
		                $field[] = get_cid_name( $row[$item] );
	                }

                } else {
                    if(trim($row[$item]) =="") {
                        $field[] = "-";
                    } else {
                        $field[] = $row[$item];
                    }
                }
            }
	        $field[] = $row['example_link'];
	        $field[] = $row['user_soroush'];
            $data[] = $field;
        }

//        echo "<pre>";
//        print_r($data);
//        exit;



        //export Excel
        $link = phpexcel('لیست گزارش',$list_field,$data,$file_pishvand = 'shabab',"ردیف");
        echo '
			<div id="alert-id">
			<div class="well text-right rtl"><a style="text-decoration:none;" href="'.$link.'"><span class="dashicons dashicons-admin-links"></span> دریافت فایل گزارش با فرمت اکسل</a></div>
			</div>';