Please enable JavaScript!
Bitte aktiviere JavaScript!
S'il vous plaît activer JavaScript!
Por favor,activa el JavaScript!
antiblock.org

 |  | 

PHP

Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel

img-responsive

Sesuai janji saya walau terlambat. Kali ini saya akan coba menjelaskan bagaimana cara membuat export data dari database ke excel dengan menggunakan plugin PHPExcel. Sebelumnya saya telah membuat tutorial yang sama yaitu Cara Mudah Membuat Export Excel Tanpa Plugin dengan PHP. Bedanya dengan tutorial kali ini yakni pada tutorial ini kita menggunakan plugin. Tentunya kalau kita membuatnya dengan plugin mungkin terbilang lebih sulit. Tapi dengan menggunakan plugin PHPExcel ini kita juga jadi bisa lebih leluasa untuk melakukan kustomisasi terhadap file excel yang akan kita export. Biar tidak terlalu lama basa basi nya, langsung aja ikuti step by stepnya berikut ini.


DEMO
Sebelum masuk ke tutorialnya. Mungkin ada yang mau lihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.


STEP 1 – PERSIAPAN
Berikut ini adalah hal-hal yang harus dipersiapkan :

  1. Download plugin PHPExcel, klik link berikut : Download.
    Bingung cara downloadnya? klik disini untuk melihat caranya.
  2. Buat sebuah folder baru dengan nama export_phpexcel, lalu simpan pada folder xampp/htdocs/.
  3. Ekstrak file PHPExcel.7z yang telah di download tadi, lalu copy and paste folder PHPExcel nya ke folder xampp/htdocs/export_phpexcel/.

STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :

  1. Buat sebuah database dengan nama mynotescode.
  2. Buat sebuah tabel dengan nama siswa. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel

    CREATE TABLE IF NOT EXISTS `siswa` (
      `nis` varchar(11) NOT NULL,
      `nama` varchar(50) NOT NULL,
      `jenis_kelamin` varchar(10) NOT NULL,
      `telp` varchar(15) NOT NULL,
      `alamat` text NOT NULL,
      PRIMARY KEY (`nis`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

STEP 3 – KONEKSI DATABASE
Pada step ini, kita akan membuat file php yang berfungsi untuk menghubungkan dengan database MySQL. Silahkan buat file koneksi.php, lalu simpan di folder xampp/htdocs/export_phpexcel/. Berikut ini kodenya :

<?php
$host = 'localhost'; // Nama hostnya
$username = 'root'; // Username
$password = ''; // Password (Isi jika menggunakan password)
$database = 'mynotescode'; // Nama databasenya

// Koneksi ke MySQL dengan PDO
$pdo = new PDO('mysql:host='.$host.';dbname='.$database, $username, $password);
?>

STEP 4 – VIEW DATA
Langkah selanjutnya adalah membuat halaman untuk view data siswa dari database. Buat sebuah file dengan nama index.php, lalu simpan di folder xampp/htdocs/export_phpexcel/. Berikut ini tampilan dan kodenya :

View Data - Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    <title>Export Data ke Excel dengan PHPExcel</title>

  </head>
  <body>
    <!-- HEADER
    -- SKRIP HANYA UNTUK HEADER
    -- HAPUS SAJA JIKA TIDAK DIPERLUKAN
    -->
    <div style="background: whitesmoke;padding: 10px;">
      <h1 style="margin-top: 0;">Export Data ke Excel dengan PHPExcel</h1>
      <p>
        FOLLOW US ON &nbsp;
        <a target="_blank" style="background: #3b5998; padding: 0 5px; border-radius: 4px; color: #f7f7f7; text-decoration: none;" href="https://www.facebook.com/mynotescode">Facebook</a> 
        <a target="_blank" style="background: #00aced; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://twitter.com/mynotescode">Twitter</a> 
        <a target="_blank" style="background: #d34836; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://plus.google.com/118319575543333993544">Google+</a>
        <a target="_blank" style="background: black; padding: 0 5px; border-radius: 4px; color: #ffffff; text-decoration: none;" href="https://www.youtube.com/channel/UCO394itv-u7Tn4CgI3bMYIg">YouTube</a>
      </p>
    </div>
    <!-- END HEADER -->
    
    <h3>Data Siswa</h3>
    
    <a href="proses.php">Export ke Excel</a><br><br>
    
    <table border="1" cellpadding="5">
      <tr>
        <th>No</th>
        <th>NIS</th>
        <th>Nama</th>
        <th>Jenis Kelamin</th>
        <th>Telepon</th>
        <th>Alamat</th>
      </tr>
      <?php
      // Load file koneksi.php
      include "koneksi.php";
      
      // Buat query untuk menampilkan semua data siswa
      $sql = $pdo->prepare("SELECT * FROM siswa");
      $sql->execute(); // Eksekusi querynya
      
      $no = 1; // Untuk penomoran tabel, di awal set dengan 1
      while($data = $sql->fetch()){ // Ambil semua data dari hasil eksekusi $sql
        echo "<tr>";
        echo "<td>".$no."</td>";
        echo "<td>".$data['nis']."</td>";
        echo "<td>".$data['nama']."</td>";
        echo "<td>".$data['jenis_kelamin']."</td>";
        echo "<td>".$data['telp']."</td>";
        echo "<td>".$data['alamat']."</td>";
        echo "</tr>";
        
        $no++; // Tambah 1 setiap kali looping
      }
      ?>
    </table>
  </body>
</html>

Saya akan coba jelaskan sedikit mengenai kode diatas.

include “koneksi.php”;
Kode tersebut berfungsi untuk me-load file koneksi.php.

$sql = $pdo->prepare(“SELECT * FROM siswa”);
$sql->execute();
Kode tersebut berfungsi untuk melakukan query ke database dan mengeksekusinya. Pada cotoh diatas, kita akan melakukan query untuk menampilkan semua data dari tabel siswa.

$data = $sql->fetch()
Kode tersebut berfungsi untuk mengambil semua data hasil query dan menampung data-data tersebut di dalam sebuah array lalu menyimpannya ke dalam variabel $data. Kode tersebut saya simpan di dalam sebuah kode while(….) yang berfungsi untuk melakukan proses perulangan sampai data terkahir dengan tujuan agar kita bisa menampilkan datanya satu per satu.

echo "<tr>";
echo "<td>".$no."</td>";
echo "<td>".$data['nis']."</td>";
echo "<td>".$data['nama']."</td>";
echo "<td>".$data['jenis_kelamin']."</td>";
echo "<td>".$data['telp']."</td>";
echo "<td>".$data['alamat']."</td>";
echo "</tr>";

Pada kode diatas terdapat variabel $data digunakan untuk mengambil isi dari field-field yang ada pada tabel siswa di database mynotescode. Pada kode diatas juga ada kode yang berada pada tanda [‘……’], kode tersebut harus sama dengan nama field yang ada pada tabel siswa.


STEP 5 – EXPORT EXCEL
Terakhir, kita akan membuat fitur untuk export ke excel. Buat sebuah file dengan nama proses.php, lalu simpan pada folder xampp/htdocs/export_phpexcel/. Berikut ini kodenya :

<?php
// Load file koneksi.php
include "koneksi.php";

// Load plugin PHPExcel nya
require_once 'PHPExcel/PHPExcel.php';

// Panggil class PHPExcel nya
$excel = new PHPExcel();

// Settingan awal file excel
$excel->getProperties()->setCreator('My Notes Code')
             ->setLastModifiedBy('My Notes Code')
             ->setTitle("Data Siswa")
             ->setSubject("Siswa")
             ->setDescription("Laporan Semua Data Siswa")
             ->setKeywords("Data Siswa");

// Buat sebuah variabel untuk menampung pengaturan style dari header tabel
$style_col = array(
  'font' => array('bold' => true), // Set font nya jadi bold
  'alignment' => array(
    'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, // Set text jadi ditengah secara horizontal (center)
    'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER // Set text jadi di tengah secara vertical (middle)
  ),
  'borders' => array(
    'top' => array('style'  => PHPExcel_Style_Border::BORDER_THIN), // Set border top dengan garis tipis
    'right' => array('style'  => PHPExcel_Style_Border::BORDER_THIN),  // Set border right dengan garis tipis
    'bottom' => array('style'  => PHPExcel_Style_Border::BORDER_THIN), // Set border bottom dengan garis tipis
    'left' => array('style'  => PHPExcel_Style_Border::BORDER_THIN) // Set border left dengan garis tipis
  )
);

// Buat sebuah variabel untuk menampung pengaturan style dari isi tabel
$style_row = array(
  'alignment' => array(
    'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER // Set text jadi di tengah secara vertical (middle)
  ),
  'borders' => array(
    'top' => array('style'  => PHPExcel_Style_Border::BORDER_THIN), // Set border top dengan garis tipis
    'right' => array('style'  => PHPExcel_Style_Border::BORDER_THIN),  // Set border right dengan garis tipis
    'bottom' => array('style'  => PHPExcel_Style_Border::BORDER_THIN), // Set border bottom dengan garis tipis
    'left' => array('style'  => PHPExcel_Style_Border::BORDER_THIN) // Set border left dengan garis tipis
  )
);

$excel->setActiveSheetIndex(0)->setCellValue('A1', "DATA SISWA"); // Set kolom A1 dengan tulisan "DATA SISWA"
$excel->getActiveSheet()->mergeCells('A1:F1'); // Set Merge Cell pada kolom A1 sampai F1
$excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(TRUE); // Set bold kolom A1
$excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(15); // Set font size 15 untuk kolom A1
$excel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // Set text center untuk kolom A1

// Buat header tabel nya pada baris ke 3
$excel->setActiveSheetIndex(0)->setCellValue('A3', "NO"); // Set kolom A3 dengan tulisan "NO"
$excel->setActiveSheetIndex(0)->setCellValue('B3', "NIS"); // Set kolom B3 dengan tulisan "NIS"
$excel->setActiveSheetIndex(0)->setCellValue('C3', "NAMA"); // Set kolom C3 dengan tulisan "NAMA"
$excel->setActiveSheetIndex(0)->setCellValue('D3', "JENIS KELAMIN"); // Set kolom D3 dengan tulisan "JENIS KELAMIN"
$excel->setActiveSheetIndex(0)->setCellValue('E3', "TELEPON"); // Set kolom E3 dengan tulisan "TELEPON"
$excel->setActiveSheetIndex(0)->setCellValue('F3', "ALAMAT"); // Set kolom F3 dengan tulisan "ALAMAT"

// Apply style header yang telah kita buat tadi ke masing-masing kolom header
$excel->getActiveSheet()->getStyle('A3')->applyFromArray($style_col);
$excel->getActiveSheet()->getStyle('B3')->applyFromArray($style_col);
$excel->getActiveSheet()->getStyle('C3')->applyFromArray($style_col);
$excel->getActiveSheet()->getStyle('D3')->applyFromArray($style_col);
$excel->getActiveSheet()->getStyle('E3')->applyFromArray($style_col);
$excel->getActiveSheet()->getStyle('F3')->applyFromArray($style_col);

// Set height baris ke 1, 2 dan 3
$excel->getActiveSheet()->getRowDimension('1')->setRowHeight(20);
$excel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);
$excel->getActiveSheet()->getRowDimension('3')->setRowHeight(20);

// Buat query untuk menampilkan semua data siswa
$sql = $pdo->prepare("SELECT * FROM siswa");
$sql->execute(); // Eksekusi querynya

$no = 1; // Untuk penomoran tabel, di awal set dengan 1
$numrow = 4; // Set baris pertama untuk isi tabel adalah baris ke 4
while($data = $sql->fetch()){ // Ambil semua data dari hasil eksekusi $sql
  $excel->setActiveSheetIndex(0)->setCellValue('A'.$numrow, $no);
  $excel->setActiveSheetIndex(0)->setCellValue('B'.$numrow, $data['nis']);
  $excel->setActiveSheetIndex(0)->setCellValue('C'.$numrow, $data['nama']);
  $excel->setActiveSheetIndex(0)->setCellValue('D'.$numrow, $data['jenis_kelamin']);
  
  // Khusus untuk no telepon. kita set type kolom nya jadi STRING
  $excel->setActiveSheetIndex(0)->setCellValueExplicit('E'.$numrow, $data['telp'], PHPExcel_Cell_DataType::TYPE_STRING);
  
  $excel->setActiveSheetIndex(0)->setCellValue('F'.$numrow, $data['alamat']);
  
  // Apply style row yang telah kita buat tadi ke masing-masing baris (isi tabel)
  $excel->getActiveSheet()->getStyle('A'.$numrow)->applyFromArray($style_row);
  $excel->getActiveSheet()->getStyle('B'.$numrow)->applyFromArray($style_row);
  $excel->getActiveSheet()->getStyle('C'.$numrow)->applyFromArray($style_row);
  $excel->getActiveSheet()->getStyle('D'.$numrow)->applyFromArray($style_row);
  $excel->getActiveSheet()->getStyle('E'.$numrow)->applyFromArray($style_row);
  $excel->getActiveSheet()->getStyle('F'.$numrow)->applyFromArray($style_row);
  
  $excel->getActiveSheet()->getRowDimension($numrow)->setRowHeight(20);
  
  $no++; // Tambah 1 setiap kali looping
  $numrow++; // Tambah 1 setiap kali looping
}

// Set width kolom
$excel->getActiveSheet()->getColumnDimension('A')->setWidth(5); // Set width kolom A
$excel->getActiveSheet()->getColumnDimension('B')->setWidth(15); // Set width kolom B
$excel->getActiveSheet()->getColumnDimension('C')->setWidth(25); // Set width kolom C
$excel->getActiveSheet()->getColumnDimension('D')->setWidth(20); // Set width kolom D
$excel->getActiveSheet()->getColumnDimension('E')->setWidth(15); // Set width kolom E
$excel->getActiveSheet()->getColumnDimension('F')->setWidth(30); // Set width kolom F

// Set orientasi kertas jadi LANDSCAPE
$excel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);

// Set judul file excel nya
$excel->getActiveSheet(0)->setTitle("Laporan Data Transaksi");
$excel->setActiveSheetIndex(0);

// Proses file excel
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="Data Siswa.xlsx"'); // Set nama file excel nya
header('Cache-Control: max-age=0');

$write = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$write->save('php://output');
?>

Saya akan menjelaskan sedikit mengenai kode diatas karena sebagian besar sudah saya jelaskan di setiap baris skrip diatas dengan komentar.

$excel->setActiveSheetIndex(0)->setCellValue(‘A1’, “DATA SISWA”);
Seperti yang sudah saya jelaskan lewat komentar, skrip diatas berfungsi untuk menset kolom A1 dengan tulisan DATA SISWA. Mungkin ada yang bingung maksud dari A1 disini apa? lihat gambar berikut ini :

Set Cell Value - Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel

Yang saya beri tanda panah itulah yang dimaksud dengan kolom A1. Saya harap Anda paham maksud saya.

$excel->getActiveSheet()->mergeCells(‘A1:F1’);
Fungsi dari skrip diatas adalah untuk membuat “Merge Cells”. Dan arti dari ‘A1:F1’ itu adalah buat merge kolom dari kolom A1 sampai dengan kolom F1. Untuk lebih jelasnya lihat gambar dibawah :

Merge Cells - Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel

Setelah di merge akan menghasilkan seperti gambar berikut :

After Merge Cells - Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel

Mungkin itu tambahan penjelasan dari skrip proses excel nya. untuk lebih lengkapnya mengenai fungsi apa saja yang disediakan oleh PHPExcel, Anda bisa membaca dokumentasinya langsung. Klik link berikut untuk download dokumentasi PHPExcel nya : Download.


Sekian untuk tutorial kali ini. Jika ada hal yang ingin ditanyakan, langsung tanyakan saja lewat kolom komentar dibawah ini. Jangan lupa LIKE dan SHARE nya hehe, Terimakasih.


SOURCE CODE
Untuk download source codenya, silahkan klik link berikut : Download.
Bingung cara downloadnya? klik disini untuk mengetahui caranya.

Tutorial membuat export data ke excel dengan plugin PHPExcel, Tutorial membuat laporan excel dengan PHPExcel, Cara membuat laporan excel dengan PHPExcel, Tutorial membuat export data dari database ke excel dengan PHPExcel, Cara membuat export data dari database ke excel dengan PHPExcel

PHPExcel

(Total : 5,524 viewers, 1 viewers today)
cara-membuat-export-data-dari-database-ke-excel-dengan-phpexcel

ABOUT THE AUTHOR

Interested in android programming, long time focused on web development. Visit My Profile Site at www.rizaldimaulidia.com

POST YOUR COMMENTS

Your email address will not be published. Required fields are marked *

Name *

Email *

Website

24 Comments

  1. dodiirwarn

    gan, ini ane pake appserv error mulu y pas mw export, ket ”
    Fatal error: Uncaught exception ‘PDOException’ with message ‘could not find driver’ in C:\AppServ\www\internal_new\admin\koneksi.php:11 Stack trace: #0 C:\AppServ\www\internal_new\admin\koneksi.php(11): PDO->__construct(‘mysql:localhost…’, ‘root’, ‘sleketep’) #1 C:\AppServ\www\internal_new\admin\proses1.php(3): include(‘C:\AppServ\www\…’) #2 {main} thrown in C:\AppServ\www\internal_new\admin\koneksi.php on line 11″

    itu apa harus pake xampp ??

    • Rizaldi Maulidia Achmad

      Dari error nya sih “could’nt find driver”. Kayanya driver untuk PDO nya belum di install. Harus di install dulu om. Cara nya coba search di google buat install driver pdo di appserv

  2. Catur sugiarto

    Waaaa makasiiiih gan, akhirnya bisa juga
    gan mau tanya supaya nama defaultnya ada tanggalnya gmn gan

    bagian ini diuah apa ya, misal saya pinginnya DATA SISWA 20-11-2017.xlsx

    header(‘Content-Disposition: attachment; filename=”Data Siswa.xlsx”‘); // Set nama file excel nya

    makasih ya gan

    • Rizaldi Maulidia Achmad

      sama-sama om, senang bisa membantu 😀
      tanggal apa dulu? tanggal hari ini maksudnya? kalo tanggal hari ini tinggal pake date(“d-m-Y”);
      jadi kaya gini :
      header(‘Content-Disposition: attachment; filename=”Data Siswa “.date(“d-m-Y”).”.xlsx”‘);
      .
      maaf baru bisa balas sekarang om

  3. rahmad hidayat

    Di local jalan, tapi ketika di hosting ko filenya tidak terbaca trus ya kk ?

    • Rizaldi Maulidia Achmad

      Apa tulisan errornya?

  4. rahmad hidayat

    Kok di local berhasil, tapi ketika di hosting gagal ya ? itu gimana om ?

    • Rizaldi Maulidia Achmad

      Ada error yang muncul?

  5. RUSYDI DARUN RHIO

    Kang Rizaldi,
    Kalau coloumn A3, B3, C3, D3, E3, F3 dikasih warna backgroundnya gimana caranya??

    • Rizaldi Maulidia Achmad

      Nanti malam saya kasiy tau ya om. Sekarang lagi ga pegang laptop hehe

    • Rizaldi Maulidia Achmad

      untuk memberi warna. bisa gunakan skrip berikut :

      $excel->getActiveSheet()->getStyle(‘A3’)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
      $excel->getActiveSheet()->getStyle(‘A3’)->getFill()->getStartColor()->setARGB(‘FFFF0000’);

      $excel disitu adalah objek excel nya
      A3 disitu adalah kolom yang ingin diberi warnanya

  6. Jonny Eka

    kang Rizaldi,

    Kenapa setiap kali selesai save as file excelnya, kemudian file tersebut di buka ternyata dalamnya (sheet-nya) kosong ya ?
    tidak ada satu tulisan pun, dan grid line nya juga tidak ada, jadi tampak hanya putih saja. Mohon petunjuknya. Terima kasih.

    • Rizaldi Maulidia Achmad

      sebelumnya datanya ada?

  7. taufikal

    // Load plugin PHPExcel nyarequire_once ‘PHPExcel/PHPExcel.php’;
    PHPExcel itu menandakan directory foldernya kan gan?
    Mungkin error karena nama folder di tutorial agan export_phpexcel
    Sebelumnya thanks gan, ane berhasil.
    Kalau ane punya data grafik di website, data grafiknya pakai chart js. terus mau convert ke gambar bisa gak gan?

    • Rizaldi Maulidia Achmad

      export_phpexcel itu nama folder web nya om, kalau untuk folder librari excel nya PHPExcel

      kalau pakai chart js setau saya ga bisa om. kalau mau pakai yang premium yaitu highchart. kalau highchart ada fitur buat export ke PDF atau gambar. Highchart juga ada yang free nya tapi untuk “Non-Commercial”

      Maaf baru bisa balas om

  8. Falafi Herdian

    error bagian ini gan, beda data base. nama tablenya juga udah bener penulisannya
    Notice: Undefined variable: pdo in PHPExcel\proses.php on line 85
    Fatal error: Call to a member function prepare() on null in PHPExcel\proses.php on line 85

    • Rizaldi Maulidia Achmad

      Disitu errornya sudah jelas om. Undefined $pdo. Variabel pdo belum di deklarasi sebelumnya. Coba kirim kan source code nya via fans page fb kami. Biar bisa saya cek

  9. hexadecimal

    error ini pada excel gmn bang?
    sy pake PHP Version 7.1.7
    Fatal error: ‘break’ not in the ‘loop’ or ‘switch’ context in C:\xampp\htdocs\cms\phpexcel – Copy\PHPExcel\PHPExcel\Calculation\Functions.php on line 581

    • Rizaldi Maulidia Achmad

      Coba kirim kan source code nya lewat fans page fb kami om. Nanti saya cek

  10. fajarfajar

    mas, kalau mau mengexport dengan kritria tertentu gimana yah? misal jika ditambah dengan kolom tgl lahir, kita mau ambil dengan range tanggal tertentu. bagaimana yah mas? terima kasih

    • Rizaldi Maulidia Achmad

      Kalau mau seperti itu. Link export nya di ganti jadi tombol submit. Jadi buat sebuah form dengan textbox tanggal tadi plus tombol submit untuk mengirim data tanggal ke file proses export nya. Nanti di file proses, tambahkan query “WHERE tgl BETWEEN ‘”.$_POST[‘tgl1’].”‘ AND ‘”.$_POST[‘tgl2’].”‘”

  11. hendragunawan

    Trmksh mas sudah berbagi. Utk source code spt nya beda dg judul.

    • Rizaldi Maulidia Achmad

      Sama-sama om. Beda dengan judul maksudnya gimana om? Source code nya tidak sesuai tutorial ini ? Kalau iya, Nanti saya coba cek om. Terimakasih infonya

    • Rizaldi Maulidia Achmad

      link download source codenya sudah saya perbaiki om. Sekali lagi terimakasih atas laporan link error nya

NOTE ARCHIVES