About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • PHP
  • /
  • Script PHP Export Data MySQL Ke File Excel Multiple Sheet
PHP

Script PHP Export Data MySQL Ke File Excel Multiple Sheet

Sebelumnya, saya pernah memposting artikel tentang export data ke Excel (.xls) di blog ini. Namun, dalam artikel tersebut, file Excel yang dihasilkan berupa single sheet atau single worksheet. Lantas, bagaimana jika kita ingin mengeksport beberapa data ke beberapa sheet sekaligus dalam satu file? Mudah-mudahan artikel yang saya buat ini bisa mencerahkan para pengunjung blog tutorial gratis ini yang ingin tahu caranya 🙂

Untuk keperluan export data excel dengan multiple sheet ini, saya menggunakan class Spreadsheet_WriteExcel yang sudah tersedia. Silakan Anda mengunduh class tersebut di sini.

Namun, sayangnya manual atau petunjuk penggunaan class tersebut sangatlah minim sehingga terpaksa saya membedah class tersebut untuk mendapatkan method atau fasilitas apa saja yang bisa digunakan dalam class ini.

Dalam artikel ini, saya akan mencoba mengupas cara mengeksport data yang ada di MySQL ke dalam file Excel menggunakan class Spreadsheet_WriteExcel. Sebagai contoh misalkan kita memiliki data mahasiswa di MySQL seperti pada gambar berikut ini

Export MySQL ke Excel

Selanjutnya kita ingin mengeksport data mahasiswa tersebut ke file Excel dengan 2 sheet, yaitu sheet pertama untuk menampilkan data mahasiswa laki-laki, dan sheet kedua untuk data mahasiswa perempuan, sebagaimana tampak pada kedua gambar di bawah ini.

Export MySQL ke Excel
Export MySQL ke Excel

Berikut ini adalah script PHP yang nantinya akan menghasilkan file Excel dengan 2 sheet apabila script ini dijalankan di browser.

export.php

<?php
  require_once('Worksheet.php');
  require_once('Workbook.php');
  
  // koneksi ke mysql
  mysql_connect('dbhost', 'dbuser', 'dbpass');
  mysql_select_db('dbname');

  // function untuk membuat header file excel
  function HeaderingExcel($filename) {
      header("Content-type: application/vnd.ms-excel");
      header("Content-Disposition: attachment; filename=$filename" );
      header("Expires: 0");
      header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
      header("Pragma: public");
      }

  // membuat header file excel dan nama filenya
  HeaderingExcel('mhs.xls');

  // membuat workbook baru
  $workbook = new Workbook("");
  // membuat worksheet ke-1 (data laki-laki)
  $worksheet1 =& $workbook->add_worksheet('Laki-laki');
  
  // setting format header tabel data
  $format =& $workbook->add_format();
  $format->set_align('vcenter');
  $format->set_align('center');
  $format->set_color('white');
  $format->set_bold();
  $format->set_italic();
  $format->set_pattern();
  $format->set_fg_color('red');
  
  // membuat header tabel dengan format
  $worksheet1->set_row(0, 15);
  $worksheet1->set_column(0, 0, 10);
  $worksheet1->write_string(0, 0, "NIM", $format);
  $worksheet1->set_column(0, 1, 30);
  $worksheet1->write_string(0, 1, "NAMA", $format);
  $worksheet1->set_column(0, 2, 20);
  $worksheet1->write_string(0, 2, "TINGGI BADAN (cm)", $format);
  	
  // menampilkan data mhasiswa laki-laki
  
  $query = "SELECT * FROM mhs WHERE jns_kelamin = 'L'";
  $hasil = mysql_query($query);
  $baris = 1;
  while ($data = mysql_fetch_array($hasil))
  {
        $worksheet1->write_string($baris, 0, $data['nim']);
        $worksheet1->write_string($baris, 1, $data['nama']);
        $worksheet1->write_number($baris, 2, $data['tinggi']);
        $baris++;
  }
  
  // membuat worksheet ke-2 untuk data mhs perempuan
  $worksheet2 =& $workbook->add_worksheet('Perempuan');
    
  // membuat header tabel
  $worksheet2->set_row(0, 15);
  $worksheet2->set_column(0, 0, 10);
  $worksheet2->write_string(0, 0, "NIM", $format);
  $worksheet2->set_column(0, 1, 30);
  $worksheet2->write_string(0, 1, "NAMA", $format);
  $worksheet2->set_column(0, 2, 20);
  $worksheet2->write_string(0, 2, "TINGGI BADAN (cm)", $format);
  	
  // menampilkan data mhasiswa perempuan
  
  $query = "SELECT * FROM mhs WHERE jns_kelamin = 'P'";
  $hasil = mysql_query($query);
  $baris = 1;
  while ($data = mysql_fetch_array($hasil))
  {
        $worksheet2->write_string($baris, 0, $data['nim']);
        $worksheet2->write_string($baris, 1, $data['nama']);
        $worksheet2->write_number($baris, 2, $data['tinggi']);
        $baris++;
  }
 
  $workbook->close();
?>

Pada script di atas, ada beberapa perintah yang perlu saya jelaskan di sini yaitu:

$worksheet1 =& $workbook->add_worksheet('Laki-laki');

Perintah di atas digunakan untuk membuat sheet atau worksheet dengan nama ‘Laki-laki’ (worksheet1). Selanjutnya perintah yang terkait dengan $worksheet1 tersebut selalu didahului dengan $worksheet1->… Demikian juga ketika membuat worksheet ke dua (worksheet2).

Kelebihan dari class ini adalah bisa memformat tampilan teks maupun cellnya. Dalam contoh di atas, diberikan perintah sbb:

$format =& $workbook->add_format();
$format->set_align('vcenter');
$format->set_align('center');
$format->set_color('white');
$format->set_bold();
$format->set_italic();
$format->set_pattern();
$format->set_fg_color('red');

dengan perintah di atas, kita akan membuat format teks dengan properti: bold, italic, background warna merah, vertical centered, horizontal centerd, dan warna fontnya putih. Format tersebut nantinya akan diberikan pada cell yang merupakan header dari tabel data mahasiswanya. Sebagai contoh, misalkan kita ingin memformat pada cell header tabel ‘NAMA’ dengan properti di atas pada sheet 2, maka perintahnya:

$worksheet2->write_string(0, 1, "NAMA", $format);

di mana parameter 0 dan 1 merupakan koordinat cell nya.

Adapun method set_row(x, y) digunakan untuk mengatur lebar baris pada kolom ke-x, dengan lebar y pixel. Sedangkan method set_column(x, y, z) untuk mengatur lebar kolom sebesar z pixel pada kolom ke-y. Untuk menuliskan data ke dalam cell, bisa menggunakan method write_string() maupun write_number(). Beda antara keduanya adalah jika method write_string() akan dihasilkan string pada cell tersebut, sedangkan write_number() data yang ditulis dalam cell berupa bilangan.

 


Beli Buku Pemrograman

5 Langkah Mudah Menguasai React Native
Rahasia Inti Master PHP & MySQLi (Improved)
Jalan Pintas Menjadi Master React JS
Trik Kolaborasi React dengan PHP & MySQL

Article by Request

Anda belum memahami konsep pemrograman PHP Native, Python, Java, atau SQL? atau Anda belum punya ide penyelesaian dari studi kasus yang dihadapi sampai saat ini.

Silakan manfaatkan layanan Article by Request di blog ini.

Bagikan artikel ini jika bermanfaat !

Assalaamu'alaikum.. aktivitas keseharian saya mengajar di Universitas Sebelas Maret, dengan matakuliah pemrograman dan basis data. Adapun bidang penelitian saya tentang computational thinking dan computer-aided learning.

Leave a Reply