Penawaran Engine Reservasi Tiket Pesawat

Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP


Script PHP Export Data MySQL Ke File Excel Multiple Sheet


September 23rd, 2012 | by rosihanari | Cetak Artikel Cetak Artikel


Jual kaos

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.




Share ke Facebook Share ke Twitter
Baca Juga Artikel Terkait
Script PHP Import Data Dari File Excel Multiple Sheet Ke MySQL
Membuat Script PHP Import Data MS. Excel Ke MySQL
Export Data Dari MySQL ke XML dengan PHP
Script PHP untuk Membuat Report Format MS. Excel
Script Cari Data File Yang Terupload Ke MySQL

Kata kunci: export excel - export mysql - multiple sheet - script php -


 

Komentar Anda ...