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

 |  | 
Anda ingin membuat website?
Untuk Anda yang sedang mencari orang untuk jasa pembuatan website, Saya akan bantu buatkan aplikasi sesuai kebutuhan Anda. Segera hubungi : mail@rizaldimaulidia.com. Selengkapnya tentang profil saya klik www.rizaldimaulidia.com.

PHP

Cara Membuat Export Excel Plus Filter Tanggal dengan PhpSpreadsheet

img-responsive

Tutorial ini masih seputar excel. Setelah sebelumnya saya buat tutorial Cara Export Data dari Database ke Excel dengan PhpSpreadsheet. Kali ini kita akan buat export excel juga tapi dengan menambahkan filter tanggal. Filter tanggal ini akan sangat berguna untuk membuat fitur laporan yang sesuai kebutuhan klien. Pada tutorial ini, kita akan buat dengan menggunakan Librari PhpSpreadsheet. Kelebihan dari Librari PhpSpreadsheet ini adalah dia mendukung sampai PHP Versi terbaru (PHP 8). Beda dengan PHPExcel yang hanya mendukung sampai PHP 7.2.8.


PENTING, MOHON DIBACA TERLEBIH DAHULU
Tutorial ini menggunakan librari PhpSpreadsheet untuk proses export excelnya. Librari ini hanya mendukung PHP versi 7.2 ke atas. Bagi teman-teman yang menggunakan PHP versi 7.2 ke bawah, bisa baca tutorial ini : Cara Membuat Export Excel Plus Filter Tanggal dengan PHPExcel.


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 jQuery, klik link berikut ini : Download.
  2. Download jQuery UI, klik link berikut ini : Download.
    jQuery UI ini kita butuhkan untuk membuat inputan datepicker.
  3. Buat sebuah folder baru dengan nama export_excel, lalu simpan pada folder xampp/htdocs/.
  4. Buat sebuah folder dengan nama js, lalu simpan pada folder xampp/htdocs/export_excel/.
  5. Buat sebuah folder dengan nama libraries, lalu simpan pada folder xampp/htdocs/export_excel/.
  6. Copy file jquery.min.js yang sudah didownload ke folder xampp/htdocs/export_excel/js/.
  7. Ekstrak file jquery-ui.7z yang sudah didownload tadi, lalu copy and paste folder jquery-ui nya ke folder xampp/htdocs/export_excel/libraries/.

STEP 2 – Download PhpSpreadsheet
Pada langkah ini kita akan coba download librari PhpSpreadsheet nya dengan menggunakan Composer. Belum tau apa itu Composer? Cara installnya gimana? silahkan mampir dulu ke tutorial cara install composer berikut : Cara Install di Windows / Cara Install di Linux.

Setelah memastikan teman-teman sudah menginstall composernya, silahkan ikuti langkah berikut :

  1. Buka Command Prompt atau CMD.
  2. Ketik dan hit perintah berikut : cd C:\xampp\htdocs\export_excel.
    Silahkan sesuaikan path tempat teman-teman menyimpan xampp nya.
  3. Ketik dan hit perintah berikut : composer require phpoffice/phpspreadsheet. Tunggu proses download sampai selesai.
  4. Setelah teman-teman mengeksekusi perintah composer diatas, maka seharusnya di folder export_excel nya terdapat file/folder baru berikut : folder vendor, file composer.json, file composer.lock.


STEP 3 – 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 transaksi. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Membuat Export Excel Plus Filter Tanggal dengan PHPExcel

    CREATE TABLE `transaksi` (
     `id` int(11) NOT NULL,
     `kode` varchar(10) NOT NULL,
     `barang` varchar(100) NOT NULL,
     `jumlah` int(11) NOT NULL,
     `total_harga` double NOT NULL,
     `tgl` datetime NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1

STEP 4 – 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_excel/. Berikut ini kodenya :

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

$connect = mysqli_connect($host, $username, $password, $database); // Koneksi ke MySQL
?>

STEP 5 – 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_excel/. Berikut ini tampilan dan kodenya :

 View - Cara Membuat Export Excel Plus Filter Tanggal dengan PhpSpreadsheet

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <title>Export Excel Plus Filter Tanggal</title>
  <link rel="stylesheet" href="libraries/jquery-ui/jquery-ui.min.css" /> <!-- Load file css jquery-ui -->
  <script src="js/jquery.min.js"></script> <!-- Load file jquery -->
</head>
<body style="padding: 0 20px;">
  <h2>Data Transaksi</h2><hr>

  <form method="get" action="">
        <label>Filter Berdasarkan</label><br>
        <select name="filter" id="filter">
            <option value="">Pilih</option>
            <option value="1">Per Tanggal</option>
            <option value="2">Per Bulan</option>
            <option value="3">Per Tahun</option>
        </select>
        <br /><br />

        <div id="form-tanggal">
            <label>Tanggal</label><br>
            <input type="text" name="tanggal" class="input-tanggal" autocomplete="off" />
            <br /><br />
        </div>

        <div id="form-bulan">
            <label>Bulan</label><br>
            <select name="bulan">
                <option value="">Pilih</option>
                <option value="1">Januari</option>
                <option value="2">Februari</option>
                <option value="3">Maret</option>
                <option value="4">April</option>
                <option value="5">Mei</option>
                <option value="6">Juni</option>
                <option value="7">Juli</option>
                <option value="8">Agustus</option>
                <option value="9">September</option>
                <option value="10">Oktober</option>
                <option value="11">November</option>
                <option value="12">Desember</option>
            </select>
            <br /><br />
        </div>

        <div id="form-tahun">
            <label>Tahun</label><br>
            <select name="tahun">
                <option value="">Pilih</option>
                <?php
                $query = "SELECT YEAR(tgl) AS tahun FROM transaksi GROUP BY YEAR(tgl)"; // Tampilkan tahun sesuai di tabel transaksi
                $sql = mysqli_query($connect, $query); // Eksekusi/Jalankan query dari variabel $query

                while($data = mysqli_fetch_array($sql)){ // Ambil semua data dari hasil eksekusi $sql
                    echo '<option value="'.$data['tahun'].'">'.$data['tahun'].'</option>';
                }
                ?>
            </select>
            <br /><br />
        </div>

        <button type="submit">Tampilkan</button>
        <a href="index.php">Reset Filter</a>
    </form>
    <hr />

    <?php
    if(isset($_GET['filter']) && ! empty($_GET['filter'])){ // Cek apakah user telah memilih filter dan klik tombol tampilkan
        $filter = $_GET['filter']; // Ambil data filder yang dipilih user

        if($filter == '1'){ // Jika filter nya 1 (per tanggal)
            $tgl = date('d-m-y', strtotime($_GET['tanggal']));

            echo '<b>Data Transaksi Tanggal '.$tgl.'</b><br /><br />';
            echo '<a href="proses.php?filter=1&tanggal='.$_GET['tanggal'].'">Export Excel</a><br /><br />';

            $query = "SELECT * FROM transaksi WHERE DATE(tgl)='".$_GET['tanggal']."'"; // Tampilkan data transaksi sesuai tanggal yang diinput oleh user pada filter
        }else if($filter == '2'){ // Jika filter nya 2 (per bulan)
            $nama_bulan = array('', 'Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember');

            echo '<b>Data Transaksi Bulan '.$nama_bulan[$_GET['bulan']].' '.$_GET['tahun'].'</b><br /><br />';
            echo '<a href="proses.php?filter=2&bulan='.$_GET['bulan'].'&tahun='.$_GET['tahun'].'">Export Excel</a><br /><br />';

            $query = "SELECT * FROM transaksi WHERE MONTH(tgl)='".$_GET['bulan']."' AND YEAR(tgl)='".$_GET['tahun']."'"; // Tampilkan data transaksi sesuai bulan dan tahun yang diinput oleh user pada filter
        }else{ // Jika filter nya 3 (per tahun)
            echo '<b>Data Transaksi Tahun '.$_GET['tahun'].'</b><br /><br />';
            echo '<a href="proses.php?filter=3&tahun='.$_GET['tahun'].'">Export Excel</a><br /><br />';

            $query = "SELECT * FROM transaksi WHERE YEAR(tgl)='".$_GET['tahun']."'"; // Tampilkan data transaksi sesuai tahun yang diinput oleh user pada filter
        }
    }else{ // Jika user tidak mengklik tombol tampilkan
        echo '<b>Semua Data Transaksi</b><br /><br />';
        echo '<a href="proses.php">Export Excel</a><br /><br />';

        $query = "SELECT * FROM transaksi ORDER BY tgl"; // Tampilkan semua data transaksi diurutkan berdasarkan tanggal
    }
    ?>

  <table border="1" cellpadding="8">
    <tr>
      <th>Tanggal</th>
      <th>Kode Transaksi</th>
      <th>Barang</th>
      <th>Jumlah</th>
      <th>Total Harga</th>
    </tr>
    <?php
    $sql = mysqli_query($connect, $query); // Eksekusi/Jalankan query dari variabel $query
    $row = mysqli_num_rows($sql); // Ambil jumlah data dari hasil eksekusi $sql

    if($row > 0){ // Jika jumlah data lebih dari 0 (Berarti jika data ada)
      while($data = mysqli_fetch_array($sql)){ // Ambil semua data dari hasil eksekusi $sql
        $tgl = date('d-m-Y', strtotime($data['tgl'])); // Ubah format tanggal jadi dd-mm-yyyy

        echo "<tr>";
        echo "<td>".$tgl."</td>";
        echo "<td>".$data['kode']."</td>";
        echo "<td>".$data['barang']."</td>";
        echo "<td>".$data['jumlah']."</td>";
        echo "<td>".$data['total_harga']."</td>";
        echo "</tr>";
      }
    }else{ // Jika data tidak ada
      echo "<tr><td colspan='5'>Data tidak ada</td></tr>";
    }
    ?>
  </table>

  <script src="libraries/jquery-ui/jquery-ui.min.js"></script> <!-- Load file plugin js jquery-ui -->
    <script>
    $(document).ready(function(){ // Ketika halaman selesai di load
    $('.input-tanggal').datepicker({
            dateFormat: 'yy-mm-dd', // Set format tanggalnya jadi yyyy-mm-dd
      changeMonth: true,
      changeYear: true
        });

        $('#form-tanggal, #form-bulan, #form-tahun').hide(); // Sebagai default kita sembunyikan form filter tanggal, bulan & tahunnya

        $('#filter').change(function(){ // Ketika user memilih filter
            if($(this).val() == '1'){ // Jika filter nya 1 (per tanggal)
                $('#form-bulan, #form-tahun').hide(); // Sembunyikan form bulan dan tahun
                $('#form-tanggal').show(); // Tampilkan form tanggal
            }else if($(this).val() == '2'){ // Jika filter nya 2 (per bulan)
                $('#form-tanggal').hide(); // Sembunyikan form tanggal
                $('#form-bulan, #form-tahun').show(); // Tampilkan form bulan dan tahun
            }else{ // Jika filternya 3 (per tahun)
                $('#form-tanggal, #form-bulan').hide(); // Sembunyikan form tanggal dan bulan
                $('#form-tahun').show(); // Tampilkan form tahun
            }

            $('#form-tanggal input, #form-bulan select, #form-tahun select').val(''); // Clear data pada textbox tanggal, combobox bulan & tahun
        })
    })
    </script>
</body>
</html>

Pada halaman ini, kita membuat sebuah form untuk filter data transaksinya. Dimana isi dari combo box filter adalah Per Tanggal, Per Bulan dan Per Tahun. Khusus untuk combo box Tahun, kita isi sesuai dengan data transaksi yang ada didatabase. Jadi nanti pilihan tahunnya menyesuaikan dengan data transaksi di database ada pada tahun berapa saja.

$tgl = date(‘d-m-y‘, strtotime($_GET[‘tanggal’]));
Kode ini untuk mengubah format tanggal menjadi dd-mm-yyyy. Disini terdapat 2 fungsi yakni date() dan strtotime(). Fungsi date berfungsi untuk menentukan format waktu yang kita ingin kan, isi dari parameter 1 adalah format yang kita inginkan, disini kita isi dengan d-m-y. Lebih lengkapnya soal isi dari parameter 1 di fungsi date() bisa anda lihat disini : Dokumentasi Fungsi Date(). Untuk strtotime() adalah sebuah kode yang berguna untuk mengubah string menjadi time. Karna paramater 2 dari fungsi date() adalah waktu yang akan diubah formatnya (dalam bentuk time). Sehingga disini kita akan mengubah data tanggal dari form filter yang formatnya yyyy-mm-dd dan tipenya string menjadi tipe time agar bisa di ubah formatnya dengan fungsi date().

$nama_bulan = array(”, ‘Januari’,’Februari’,…..
Kode ini akan kita gunakan untuk mengubah data bulan dari form filter manjadi nama bulan itu sendiri dalam bahasa indonesia. Bisa di lihat pada form filter untuk combo box bulan, disitu ada tag option dimana isinya adalah angka dimulai dari 1 untuk januari, 2 untuk februari, dan seterusnya. Nah angka dari value tadi akan kita ubah menjadi nama bulan sesuai dengan value nya dan kita panggil pada variabel $nama_bulan[value_bulannya]. Untuk informasi, index array dimulai dari 0, sehingga bisa kita lihat pada variabel $nama_bulan isi array pertama sengaja saya kosongkan karna index 0 tidak kita pakai soalnya bulan januari dimulai dari 1.

$sql = mysqli_query($connect, $query);
Untuk mengeksekusi / menjalankan query sql. struktur dasar penulisannya adalah sebagai berikut :

mysqli_query($connect, $query);

/*
Keterangan :
- $connect : diisi dengan koneksi ke mysql. hasil dari mysqli_connect
- $query : diisi dengan Query SQL yang diinginkan
*/

mysqli_num_rows($sql);
Untuk mengambil jumlah data dari hasil eksekusi suatu query sql. Struktur dasar penulisannya adalah sebagai berikut :

mysqli_num_rows($sql);

/*
Keterangan :
- $sql : diisi dengan hasil eksekusi query sql(mysql_query())
*/

mysqli_fetch_array($sql);
Untuk mengambil data dari hasil eksekusi suatu query sql. Struktur dasar penulisannya adalah sebagai berikut :

mysqli_fetch_array($sql);

/*
Keterangan :
- $sql : diisi dengan hasil eksekusi query sql(mysql_query())
*/

Kode diatas saya simpan didalam looping while berfungsi untuk melakukan proses perulangan sampai data terkahir dengan tujuan agar kita bisa menampilkan datanya satu per satu.

echo "<td>".$data['kode']."</td>";
echo "<td>".$data['barang']."</td>";
echo "<td>".$data['jumlah']."</td>";
echo "<td>".$data['total_harga']."</td>";

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


STEP 6 – PROSES CETAK (Export Excel)
Sesuai judul dari step 6 ini, kita akan masuk ke inti dari catatan ini yakni membuat proses cetak / ekspor ke file excel. Pertama-tama buat dulu sebuah file baru dan beri nama proses.php, lalu simpan file tersebut di folder xampp/htdocs/export_excel/. Berikut ini isi / skrip dari file tersebut :

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

// Load file autoload.php
require 'vendor/autoload.php';

// Include librari PhpSpreadsheet
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

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

// Buat sebuah variabel untuk menampung pengaturan style dari isi tabel
$style_row = [
  'alignment' => [
    'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER // Set text jadi di tengah secara vertical (middle)
  ],
  'borders' => [
    'top' => ['borderStyle'  => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN], // Set border top dengan garis tipis
    'right' => ['borderStyle'  => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN],  // Set border right dengan garis tipis
    'bottom' => ['borderStyle'  => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN], // Set border bottom dengan garis tipis
    'left' => ['borderStyle'  => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN] // Set border left dengan garis tipis
  ]
];

if(isset($_GET['filter']) && ! empty($_GET['filter'])){ // Cek apakah user telah memilih filter
  $filter = $_GET['filter']; // Ambil data filder yang dipilih user

  if($filter == '1'){ // Jika filter nya 1 (per tanggal)
    $tgl = date('d-m-y', strtotime($_GET['tanggal']));
    $label = 'Data Transaksi Tanggal '.$tgl;

    $query = "SELECT * FROM transaksi WHERE DATE(tgl)='".$_GET['tanggal']."'"; // Tampilkan data transaksi sesuai tanggal yang diinput oleh user pada filter
  }else if($filter == '2'){ // Jika filter nya 2 (per bulan)
    $nama_bulan = array('', 'Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember');
    $label = 'Data Transaksi Bulan '.$nama_bulan[$_GET['bulan']].' '.$_GET['tahun'];

    $query = "SELECT * FROM transaksi WHERE MONTH(tgl)='".$_GET['bulan']."' AND YEAR(tgl)='".$_GET['tahun']."'"; // Tampilkan data transaksi sesuai bulan dan tahun yang diinput oleh user pada filter
  }else{ // Jika filter nya 3 (per tahun)
    $label = 'Data Transaksi Tahun '.$_GET['tahun'];

    $query = "SELECT * FROM transaksi WHERE YEAR(tgl)='".$_GET['tahun']."'"; // Tampilkan data transaksi sesuai tahun yang diinput oleh user pada filter
  }
}else{ // Jika user tidak memilih filter
  $label = 'Semua Data Transaksi';

  $query = "SELECT * FROM transaksi ORDER BY tgl"; // Tampilkan semua data transaksi diurutkan berdasarkan tanggal
}

$sheet->setCellValue('A1', "DATA TRANSAKSI"); // Set kolom A1 dengan tulisan "DATA SISWA"
$sheet->mergeCells('A1:E1'); // Set Merge Cell pada kolom A1 sampai E1
$sheet->getStyle('A1')->getFont()->setBold(TRUE); // Set bold kolom A1

$sheet->setCellValue('A2', $label); // Set kolom A2 sesuai dengan yang pada variabel $label
$sheet->mergeCells('A2:E2'); // Set Merge Cell pada kolom A2 sampai E2

// Buat header tabel nya pada baris ke 4
$sheet->setCellValue('A4', "Tanggal"); // Set kolom A4 dengan tulisan "Tanggal"
$sheet->setCellValue('B4', "Kode Transaksi"); // Set kolom B4 dengan tulisan "Kode Transaksi"
$sheet->setCellValue('C4', "Barang"); // Set kolom C4 dengan tulisan "Barang"
$sheet->setCellValue('D4', "Jumlah"); // Set kolom D4 dengan tulisan "Jumlah"
$sheet->setCellValue('E4', "Total Harga"); // Set kolom E4 dengan tulisan "Total Harga"

// Apply style header yang telah kita buat tadi ke masing-masing kolom header
$sheet->getStyle('A4')->applyFromArray($style_col);
$sheet->getStyle('B4')->applyFromArray($style_col);
$sheet->getStyle('C4')->applyFromArray($style_col);
$sheet->getStyle('D4')->applyFromArray($style_col);
$sheet->getStyle('E4')->applyFromArray($style_col);

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

$sql = mysqli_query($connect, $query); // Eksekusi/Jalankan query dari variabel $query
$no = 1; // Untuk penomoran tabel, di awal set dengan 1
$numrow = 5; // Set baris pertama untuk isi tabel adalah baris ke 5

while($data = mysqli_fetch_array($sql)){ // Ambil semua data dari hasil eksekusi $sql
  $tgl = date('d-m-Y', strtotime($data['tgl'])); // Ubah format tanggal jadi dd-mm-yyyy

  $sheet->setCellValue('A'.$numrow, $tgl);
  $sheet->setCellValue('B'.$numrow, $data['kode']);
  $sheet->setCellValue('C'.$numrow, $data['barang']);
  $sheet->setCellValue('D'.$numrow, $data['jumlah']);
  $sheet->setCellValue('E'.$numrow, $data['total_harga']);

  // Apply style row yang telah kita buat tadi ke masing-masing baris (isi tabel)
  $sheet->getStyle('A'.$numrow)->applyFromArray($style_row);
  $sheet->getStyle('B'.$numrow)->applyFromArray($style_row);
  $sheet->getStyle('C'.$numrow)->applyFromArray($style_row);
  $sheet->getStyle('D'.$numrow)->applyFromArray($style_row);
  $sheet->getStyle('E'.$numrow)->applyFromArray($style_row);

  $sheet->getRowDimension($numrow)->setRowHeight(20);

  $no++; // Tambah 1 setiap kali looping
  $numrow++; // Tambah 1 setiap kali looping
}

// Set width kolom
$sheet->getColumnDimension('A')->setWidth(15); // Set width kolom A
$sheet->getColumnDimension('B')->setWidth(18); // Set width kolom B
$sheet->getColumnDimension('C')->setWidth(25); // Set width kolom C
$sheet->getColumnDimension('D')->setWidth(20); // Set width kolom D
$sheet->getColumnDimension('E')->setWidth(20); // Set width kolom E

// Set orientasi kertas jadi LANDSCAPE
$sheet->getPageSetup()->setOrientation(\PhpOffice\PhpSpreadsheet\Worksheet\PageSetup::ORIENTATION_LANDSCAPE);

// Set judul file sheet nya
$sheet->setTitle("Laporan Data Transaksi");
$sheet;

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

$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
?>

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

$excel->setCellValue(‘A1’, “DATA TRANSAKSI”);
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 Excel Plus Filter Tanggal dengan PhpSpreadsheet

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

$sheet->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 Excel Plus Filter Tanggal dengan PhpSpreadsheet

Setelah di merge akan menghasilkan seperti gambar berikut :

After Merge Cells - Cara Membuat Export Excel Plus Filter Tanggal dengan PhpSpreadsheet

Mungkin itu tambahan penjelasan dari skrip proses excel nya. untuk lebih lengkapnya mengenai fungsi apa saja yang disediakan oleh PhpSpreadsheet, Anda bisa membaca dokumentasinya langsung dengan mengklik link dokumentasi phpspreadsheet pada bagian Sumber Refrensi diakhir tutorial ini.



Mungkin sekian untuk catatan kali ini. Semoga bisa bermanfaat. Jika ada yang kurang dipahami, langsung tanyakan pada form komentar dibawah ini. Jangan lupa LIKE dan SHARE nya, Terimakasih banyak.

Happy Coding ^_^


SOURCE CODE
Untuk mengunduh source code nya, klik salah satu link dibawah ini.
– Download versi MySQLi tanpa Bootstrap  (Link download yang sesuai tutorial ini)
– Download versi MySQLi dengan Bootstrap 3
– Download versi MySQLi dengan Bootstrap 4
– 
Download versi PDO tanpa Bootstrap
– Download versi PDO dengan Bootstrap 3
– Download versi PDO dengan Bootstrap 4


SUMBER & REFERENSI
Dokumentasi PhpSpreadsheet : https://phpspreadsheet.readthedocs.io
Cara mudah membuat export excel plus filter tanggal bulan tahun dengan php, phpspreadsheet dan mysql, tutorial lengkap membuat export excel dengan filter tanggal bulan tahun menggunakan php, phpspreadsheet dan mysql, export excel plus filter per tanggal per bulan atau per tahun dengan php, phpspreadsheet dan mysql

PhpSpreadsheet

(Total : 2,878 viewers, 3 viewers today)
export-excel-filter-tanggal-phpspreadsheet

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

NOTE ARCHIVES