Just Share Information and Experience

Monday, 27 November 2017

Cara Membuat Sheet Baru Saat Export Data Excel Pada PHP

egan-jy.blogspot.co.id

Postingan kali ini merupakan postingan yang masih berkaitan dengan artikel yang sudah pernah saya buat sebelumnya, dimana masih berkaitan dengan proses ekport data kedalam format excel dalam bahasa pemrograman PHP dengan library PHPExcel. Untuk lebih memudahkan dalam memahami artikel  Cara Membuat Sheet Baru Saat Export Data Excel Pada PHP ini, alangkah lebih baiknya temen-temen bisa buka postingan saya sebelumnya pada link berikut ini :


Karena isi dari postingan ini merupakan lanjutan dari artikel yang sudah saya buat sebelumnya, maka file yang dibutuhkan hampir sama, hanya saja isi scriptnya saja yang ditambahkan. Karena terkait dengan judul artikel ini, yaitu kita akan mencoba membuat sheet baru saat export data ke excel. Ok langsung saja tanpa panjang lebar, kita mulai saja tutoral ini.

Pertama buat dulu sebuah database dengan nama terserah, kalau di contoh ini saya buat db dengan nama "db_data_ajax".

*Oh ya semua kelengkapan file pada artikel ini, sudah saya siapkan pada link download di bawah artikel ini, jadi tinggal nikmati aja tutorialnya,,heheheheh :)

Selanjutnya, berikut adalah struktur file yang saya buat beserta library PHPExcelnya:

egan-jy.blogspot.co.id

Oh ya, disini saya masih menggunakan framework css bootstrap untuk mempercantik tampilannya. jadi intinya yang perlu kita buat disini hanya 3 file saja, yaitu index.php, koneksi.php dan export.php

koneksi.php


<?php
$database = 'db_data_ajax';
$user = 'root';
$pass = '';
$host = 'localhost';

$conn = mysqli_connect($host,$user,$pass,$database);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

?>

Script di atas merupakan script standar untuk melakukan koneksi ke database dengan PHP, jadi rasanya tidak ada yang baru dari script ini.

index.php

<html>
<head>
<!-- CSS untuk bootstrap -->
<link rel="stylesheet" href="css/bootstrap.css" type="text/css">

</head>
<body>

<?php
include"koneksi.php";

$sql = "select * from data_provinsi";
$result = mysqli_query($conn,$sql);

$sql_kabupaten = "select a.id_kabupaten,a.nama_kabupaten,b.nama_provinsi from data_kabupaten as a left join data_provinsi as b on a.id_provinsi=b.id_provinsi";
$result_kabupaten = mysqli_query($conn,$sql_kabupaten);
?>
<div class="container">
<button id="export_data" class="btn btn-success btn-sm">Export To Excel</button>
<br>
<div class="row">
<div class="col-sm-6">
<h3>DATA PROVINSI</h3>
<table class="table table-bordered">
    <thead>
    <tr>
    <th>Id Provinsi</th>
        <th>Nama Provinsi</th>
    </tr>
    </thead>
    <tbody>
        <?php
                while($row=mysqli_fetch_assoc($result)){

                    echo"<tr><td>".$row['id_provinsi']."</td><td>".$row['nama_provinsi']."</td></tr>";

                }
        ?>
    </tbody>
    </table>
</div>
<div class="col-sm-6">
<h3>DATA KABUPATEN</h3>
<table class="table table-bordered">
    <thead>
    <tr>
    <th>Id Kabupaten</th>
        <th>Nama Kabupaten</th>
        <th>Nama Provinsi</th>
    </tr>
    </thead>
    <tbody>
        <?php
                while($row=mysqli_fetch_assoc($result_kabupaten)){

                    echo"<tr><td>".$row['id_kabupaten']."</td><td>".$row['nama_kabupaten']."</td><td>".$row['nama_provinsi']."</td></tr>";

                }
        ?>
    </tbody>
    </table>
</div>
</div>
 </div>

<!-- js untuk jquery -->
<script src="js/jquery-1.11.2.min.js"></script>
<!-- js untuk bootstrap -->
<script src="js/bootstrap.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$('#export_data').click(function(){
window.open('export.php/');
});
});
</script>
</body>
</html>

Dari script di atas juga script standar untuk melakukan eksekusi query, di atas saya memanggil 2 query pada variabel $sql dan $sql_kabupaten, yang mana masing-masing untuk ditampilkan di sheet satu dan sheet 2.

export.php


<?php
include"koneksi.php";
include"PHPExcel.php";

$sql = "select * from data_provinsi";
$result = mysqli_query($conn,$sql);

$objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()
          ->setCreator("I Kadek meganjaya") 
            ->setTitle("Contoh export data excel");

    $objset = $objPHPExcel->setActiveSheetIndex(0);
    $objget = $objPHPExcel->getActiveSheet(); 
    $objget->setTitle('Data Provinsi');

    $objset->setCellValue('A1','Id Provinsi');
    $objset->setCellValue('B1','Nama Provinsi');

    $baris=2;
    while($row=mysqli_fetch_assoc($result)){
    $objset->setCellValue("A".$baris, $row['id_provinsi']);
    $objset->setCellValue("B".$baris, $row['nama_provinsi']);
    $baris++;
    }

    //buat sheet 2
    $objPHPExcel->createSheet(1);
    $objset = $objPHPExcel->setActiveSheetIndex(1);
    $objget = $objPHPExcel->getActiveSheet();
    $objget->setTitle('Data Kabupaten');

    $sql = "select a.id_kabupaten,a.nama_kabupaten,b.nama_provinsi from data_kabupaten as a left join data_provinsi as b on a.id_provinsi=b.id_provinsi";
    $result = mysqli_query($conn,$sql);

    $objset->setCellValue('A1','Id Kabupaten');
    $objset->setCellValue('B1','Nama Kabupaten');
    $objset->setCellValue('C1','Nama Provinsi');

    $baris=2;
    while($row=mysqli_fetch_assoc($result)){
        $objset->setCellValue("A".$baris, $row['id_kabupaten']);
        $objset->setCellValue("B".$baris, $row['nama_kabupaten']);
        $objset->setCellValue("C".$baris, $row['nama_provinsi']);
        $baris++;
    }

    //kembalikan sheet aktif ke awal
    $objset = $objPHPExcel->setActiveSheetIndex(0);

    $filename = "Data Provinsi-".date("d-m-Y").".xlsx";
         
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

    //sesuaikan headernya 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    //ubah nama file saat diunduh
    header('Content-Disposition: attachment;filename='.$filename);
    //unduh file
    $objWriter->save("php://output");

?>

Nah file ini merupakan file untuk memproses export ke excel, inti dari tutorial ini adalah membuat sheet baru, yang dibuat pada script  "$objPHPExcel->createSheet(1);" . Angka 1 merupakan index dari sheet, dimana dimulai dari sheet 0 untuk sheet pertama.

Setelah semua sudah selesai, saatnya kita coba panggil di browser dan cobalah melakukan proses export data.

egan-jy.blogspot.co.id
Saat halaman index dipanggil pertama kali

egan-jy.blogspot.co.id
Contoh file hasil export, ada 2 sheet

Ok, sekian artikel kali ini semoga bermanfaat dan jika ada yang belum dipahami bisa tinggalkan di komentar ya,,,



No comments:

Post a Comment