Saturday, April 12, 2014

Cara Membuat Export Mysql To Excel Dengan Mudah Menggunakan Codeigniter

Cara Membuat Export Mysql To Excel Dengan Mudah Menggunakan Codeigniter

Cahya Dyazin - oke sekarang saya akan membahas bagaimana membuat export mysql to excel dengan menggunakan codeigniter, di sini sebagai contoh saya akan mengeksport data nama provinsi yang ada di tabel "provinsi" sintaknya sebagai berikut :

        function index() {
            $this->load->model('m_export');
            $data['daftar']=$this->m_monitor->daftar_caleg();
            $this->load->view('view_export.php',$data);
        }

        function export(){
            $this->db->select('no_urut_provinsi, provinsi');
            $this->db->order_by('no_urut_provinsi','asc');
            $query = $this->db->get('provinsi');
            $this->to_excel($query,'nama_provinsi');
        }

        function to_excel($array, $filename) {
             header('Content-type: application/vnd.ms-excel');
             header('Content-Disposition: attachment; filename='.$filename.'.xls');

             $h = array();
               foreach($array->result_array() as $row){
                   foreach($row as $key=>$val){
                       if(!in_array($key, $h)){
                        $h[] = $key; 
                       }
                   }
               }
               //echo the entire table headers
               echo '<table><tr>';
               foreach($h as $key) {
                   $key = ucwords($key);
                   echo '<th>'.$key.'</th>';
               }
               echo '</tr>';
              
               foreach($array->result_array() as $row){
                    echo '<tr>';
                   foreach($row as $val)
                        $this->writeRow($val); 
               }
               echo '</tr>';
               echo '</table>';  
       }

       function writeRow($val) {
               echo '<td>'.utf8_decode($val).'</td>';             
       }
function index untuk menampilkan list data
untuk function export() kita hanya cukup menyisipkan mysql-nya saja,
  • $this->db->select('no_urut_provinsi, provinsi'); bagian ini fungsinya untuk meng-select atau memlih field mana yang akan di print, contoh di atas itu saya mau mem-print data no urut provinsi dan nama provins.
  • $this->db->order_by('no_urut_provinsi','asc'); bagian ini fngsinya untuk mengurutkan berdasarkan no_urut_provinsi. 
  • $query = $this->db->get('provinsi'); bagian ini fungsinya untuk memilih tabel mana yang data nya akan kita print.
  • $this->to_excel($query,'nama_provinsi'); di bagian ini fungsinya untuk memanggil function untuk mengeksport ke excel.
untuk function  to_excel & function writeRow adalah function yang berfungsi untuk mengconvert data di mysql ke excel.


dan di bagian views nya kita hanya cukup memanggil function nya saya untuk melakukan print data :

<a href="<?php echo site_url('nama_controller/export');?>">export excel</a>

Agar lebih paham disini saya punya satu contoh export data sql ke excel dengan menggunakan join, di contoh ini saya akan mencektak data dari beberapa tabel ,kasusnya adalah saya akan mencetak laporan hasil suara , dan untuk mengambil nama provinsi, kabupaten, kecamatan, desa, tps dan caleg saya akan memakai sintak join untuk menggabungkan nya, yaitu sebagai berikut :

tabel provinsi -> id, nm_prov
tabel kabupaten -> id, nm_kab
tabel kecamatan -> id, nm_kec
tabel desa -> id, nm_desa
tabel tps -> id, nm_tps
tabel caleg -> id, nm_caleg
tabel suara_caleg -> id, id_prov, id_kab, id_kec, id_desa, id_tps, id_caleg, suara



        function index() {
            $this->load->model('m_export');
            $data['daftar']=$this->m_monitor->daftar_caleg();
            $this->load->view('view_export.php',$data);
        }

        function export(){
             $this->db->select('sum(suara_caleg.suara) as total_suara, provinsi.nm_prov, kabupaten.nm_kab, kecamatan.nm_kec, kelurahan.nm_kel, tps.nm_tps, caleg.nm_caleg');
            $this->db->join('provinsi','provinsi.id = suara_caleg.id_prov');
            $this->db->join('kabupaten','kabupaten.id = suara_caleg.id_kab');
            $this->db->join('kecamatan','kecamatan.id = suara_caleg.id_kec');
            $this->db->join('kelurahan','kelurahan.id = suara_caleg.id_desa');
            $this->db->join('tps','tps.id_tps = suara_caleg.id_tps');
            $this->db->join('caleg','caleg.id = suara_caleg.id_caleg');
            //$this->db->where('suara_caleg.id_project', $this->datauser->id_project);
            $this->db->order_by('caleg.no_urut','asc');
            $this->db->group_by('suara_caleg.id_caleg, suara_caleg.id_desa, suara_caleg.id_kec, suara_caleg.id_kab');
            $query = $this->db->get('suara_caleg');
            $this->to_excel($query,'download');
        }

        function to_excel($array, $filename) {
             header('Content-type: application/vnd.ms-excel');
             header('Content-Disposition: attachment; filename='.$filename.'.xls');

             $h = array();
               foreach($array->result_array() as $row){
                   foreach($row as $key=>$val){
                       if(!in_array($key, $h)){
                        $h[] = $key; 
                       }
                   }
               }
               //echo the entire table headers
               echo '<table><tr>';
               foreach($h as $key) {
                   $key = ucwords($key);
                   echo '<th>'.$key.'</th>';
               }
               echo '</tr>';
              
               foreach($array->result_array() as $row){
                    echo '<tr>';
                   foreach($row as $val)
                        $this->writeRow($val); 
               }
               echo '</tr>';
               echo '</table>';
              
          
       }

       function writeRow($val) {
               echo '<td>'.utf8_decode($val).'</td>';             
       }

untuk penjelasan sama saja, tetapi untuk di contoh yang kedua ini cuma beda di bagian function export nya saja....

Bagaimana Paham ? :)

Saya hanya seorang "newbie" yang baru bisa ngoding lohor kemarin.

6 komentar

mas naruh code di atas di bagian mana ya?

sintak ini abaikan aja
$this->load->model('m_export');

ini pake library apa gan? PHPExcel / excel_reader / yg lain ?

mas kalau saya pengen menghasilkan 2 sheet bagaimana yah ?

mas kalau gambar bisa ikut juga di export gimana yak.?


EmoticonEmoticon