Cara menggunakan php excel

PHP

Cara Ekspor Data dari Database ke Excel dengan PhpSpreadsheet

Rizaldi Maulidia Achmad

. 7 Agustus 2021

Cara menggunakan php excel

0

SAHAM

BagikanTweet

Hallo sobat kembali lagi kita akan membahas apa itu yang namanya Export Excel. Bukankah sudah ada tutorial ekspor excel? . Kali ini kita akan menggunakan library PhpSpreadsheet. Alasan saya membuat tutorial dengan library ini karena ada beberapa pengunjung blog ini yang mengeluhkan tutorial export excel sebelumnya error saat dijalankan di PHP versi 7. 3 dan di atas. Maka dari itu tutorial ini adalah jawabannya, silahkan simak langkah demi langkahnya


PENTING, HARAP BACA TERLEBIH DAHULU
Tutorial ini menggunakan library PhpSpreadsheet untuk proses ekspor excel. Perpustakaan ini hanya mendukung PHP versi 7. 2 dan di atas. Bagi sobat yang menggunakan PHP versi 7. 2 dan di bawah, dapat membaca tutorial ini. Cara Ekspor Data Dari Database ke Excel dengan PHPExcel


DEMO
Sebelum ke tutorialnya. Mungkin ada yang mau lihat demonya dulu. Silahkan klik link berikut untuk melihat demonya. Lihat Demo


LANGKAH 1 – PERSIAPAN
Untuk mempersiapkan tutorial ini, pertama kita buat folder baru dengan nama export_excel , lalu simpan ke folder tersebut xampp/htdocs/ .


LANGKAH 2 – Unduh PhpSpreadsheet
Pada langkah ini kita akan mencoba mendownload library PhpSpreadsheet menggunakan Composer. Belum tahu apa itu Composer? . Cara Install di Windows / Cara Install di Linux

Setelah yakin sobat sudah menginstal composer, silahkan ikuti langkah-langkah berikut ini

  1. Buka Command Prompt atau CMD
  2. Ketik dan tekan perintah berikut. cd C. \xampp\htdocs\export_excel .
    Silahkan sesuaikan jalur tempat teman anda menyimpan xamppnya
  3. Ketik dan tekan perintah berikut. komposer memerlukan phpoffice/phpspreadsheet . Tunggu hingga proses pengunduhan selesai.
  4. Setelah sobat mengeksekusi perintah composer diatas, seharusnya ada file/folder baru berikut di folder export_excel . folder vendor , file komposer. json , file komposer. kunci .

Baca Juga

  • Tutorial Codeigniter Indonesia Lengkap Plus Source Code
  • Tutorial PHP Bahasa Indonesia Lengkap Plus Source Code
  • Cara Mencari Tanpa Refresh Halaman dengan Codeigniter
  • Cara Membuat Laporan PDF Plus Filter Tanggal dengan Codeigniter


LANGKAH 3 – DATABASE
Pada langkah ini, kita akan membuat database. ikuti langkah-langkah berikut

  1. Buat database dengan nama mynotescode .
  2. Buat tabel dengan nama siswa . Struktur tabelnya adalah sebagai berikut.
    Cara menggunakan php excel
    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;

LANGKAH 4 – KONEKSI DATABASE
Pada langkah ini, kita akan membuat file php yang berfungsi untuk terhubung dengan database MySQL. Harap buat file koneksi. php , lalu simpan di folder  xampp/htdocs/export_excel/ . 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
?>
_

LANGKAH 5 – LIHAT DATA
Langkah selanjutnya adalah membuat halaman untuk melihat data siswa dari database. Buat file dengan nama index. php , lalu simpan di folder  xampp/htdocs/export_excel/ . Berikut tampilan dan kodenya.

Cara menggunakan php excel

<!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 PhpSpreadsheet</title>

  </head>
  <body>
    <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 = mysqli_query($connect, "SELECT * FROM siswa");

      $no = 1; // Untuk penomoran tabel, di awal set dengan 1
      while ($data = mysqli_fetch_array($sql)) { // 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 mencoba menjelaskan sedikit tentang kode di atas

termasuk “koneksi. php”;
Kode berfungsi untuk memuat file koneksi. php

$sql = mysqli_query($connect, "SELECT * FROM student");
Kode berfungsi untuk menanyakan database dan menjalankannya. Pada contoh di atas, kita akan melakukan query untuk menampilkan semua data dari tabel siswa

$data = mysqli_fetch_array($sql)

Kode berfungsi untuk mengambil semua data dari query dan menampung data tersebut dalam sebuah array dan menyimpannya dalam variabel $data . Saya menyimpan kode dalam kode sementara(…. ) yang berfungsi untuk melakukan proses pengulangan hingga data terakhir dengan tujuan agar kita dapat menampilkan data 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 yang digunakan untuk mengambil isi dari field yang ada di tabel siswa di database mynotescode . Pada kode diatas juga terdapat kode yaitu pada tanda ['……'] , kode tersebut harus sama dengan nama field pada tabel siswa .


LANGKAH 6 – EKSPOR EXCEL
Terakhir, kita akan membuat fitur untuk mengekspor ke excel. Buat file dengan nama proses. php , lalu simpan ke folder xampp/htdocs/export_excel/ . Ini kodenya.

<?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
    ]
];

$sheet->setCellValue('A1', "DATA SISWA"); // Set kolom A1 dengan tulisan "DATA SISWA"
$sheet->mergeCells('A1:F1'); // Set Merge Cell pada kolom A1 sampai F1
$sheet->getStyle('A1')->getFont()->setBold(true); // Set bold kolom A1
$sheet->getStyle('A1')->getFont()->setSize(15); // Set font size 15 untuk kolom A1

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

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

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

// Buat query untuk menampilkan semua data siswa
$sql = mysqli_query($connect, "SELECT * FROM siswa");

$no = 1; // Untuk penomoran tabel, di awal set dengan 1
$row = 4; // Set baris pertama untuk isi tabel adalah baris ke 4
while ($data = mysqli_fetch_array($sql)) { // Ambil semua data dari hasil eksekusi $sql
    $sheet->setCellValue('A' . $row, $no);
    $sheet->setCellValue('B' . $row, $data['nis']);
    $sheet->setCellValue('C' . $row, $data['nama']);
    $sheet->setCellValue('D' . $row, $data['jenis_kelamin']);

    // Khusus untuk no telepon. kita set type kolom nya jadi STRING
    $sheet->setCellValueExplicit('E' . $row, $data['telp'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);

    $sheet->setCellValue('F' . $row, $data['alamat']);

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

    $sheet->getStyle('A' . $row)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); // Set text center untuk kolom No
    $sheet->getStyle('B' . $row)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT); // Set text left untuk kolom NIS

    $sheet->getRowDimension($row)->setRowHeight(20); // Set height tiap row

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

// Set width kolom
$sheet->getColumnDimension('A')->setWidth(5); // Set width kolom A
$sheet->getColumnDimension('B')->setWidth(15); // 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(15); // Set width kolom E
$sheet->getColumnDimension('F')->setWidth(30); // Set width kolom F

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

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

// 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');

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

Saya akan menjelaskan sedikit tentang kode di atas karena saya sudah menjelaskan sebagian besar di setiap baris skrip di atas dengan komentar

$sheet->setCellValue('A1', "DATA SISWA");
Seperti yang sudah saya jelaskan di komentar, script di atas berfungsi untuk mengatur kolom A1 dengan teks DATA SISWA. Mungkin ada yang bingung maksud A1 disini?

Cara menggunakan php excel

Yang saya beri tanda panah adalah yang dimaksud dengan kolom A1. Saya harap Anda mengerti apa yang saya maksud

$sheet->mergeCells('A1. F1');
Fungsi dari script diatas adalah untuk membuat "Merge Cells". Dan arti dari 'A1. F1' adalah menggabungkan kolom dari kolom A1 ke kolom F1. Untuk lebih jelasnya lihat gambar di bawah ini

Cara menggunakan php excel

Setelah digabung akan menghasilkan seperti gambar berikut

Cara menggunakan php excel

Mungkin itu penjelasan tambahan dari script proses excel. untuk lebih jelasnya tentang fungsi apa saja yang disediakan oleh PhpSpreadsheet, anda bisa langsung membaca dokumentasinya dengan mengklik link dokumentasi phpspreadsheet di bagian Sumber Referensi di akhir tutorial ini


Baca Juga

  • Tutorial Codeigniter Indonesia Lengkap Plus Source Code
  • Tutorial PHP Bahasa Indonesia Lengkap Plus Source Code
  • Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL
  • Cara Membuat 1 File Template untuk Semua Tampilan dengan PHP


Mungkin itu saja untuk postingan kali ini. Semoga bisa bermanfaat. Jika ada yang tidak dimengerti, tanyakan langsung pada form komentar di bawah. Jangan lupa LIKE dan SHARE ya, terima kasih banyak