Cara menggunakan mysql output to csv

Ketemu lagi dengan saya. Seperti judul yang tertera pada catatan saya ini, kita kali ini akan coba membuat export data dari database ke file CSV. Sebelumnya juga saya telah membuat catatan mengenai Cara Membuat Export Data Dari Database ke Excel dengan PHPExcel. Kali ini, kita akan coba export menjadi file CSV. Pada catatan ini kita masih menggunakan librari/plugin yang sama, yaitu PHPExcel. Satu hal yang harus jadi catatan, karena kita akan export menjadi file csv. Kita jadi tidak bisa leluasa buat memformat kolom-kolom pada file csv nya seperti halnya kita export ke excel. tapi yang penting data-datanya semua berhasil di export. Langsung saja ikuti step by step nya berikut ini.


PENTING, MOHON DIBACA TERLEBIH DAHULU
Tutorial ini menggunakan librari PHPExcel untuk proses import excelnya. Librari ini setau saya dan sudah saya tes hanya mendukung sampai PHP Versi 7.2.8. Jadi bagi kamu yang pakai PHP Versi diatas 7.2.8, sebaiknya downgrade dulu atau download Xampp dimana PHP nya masih versi 7.2.8 ke bawah. Untuk tutorial PHP Versi 7.2.8 ke atas akan saya buatkan, jadi tunggu saja update tutorial selanjutnya.


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.
  2. Buat sebuah folder baru dengan nama export_csv, 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_csv/.

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 :
    Cara menggunakan mysql output to csv
    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;

Baca Juga:

  • Tutorial Codeigniter Bahasa Indonesia Lengkap Plus Source Code
  • Tutorial PHP Bahasa Indonesia Lengkap Plus Source Code
  • Cara Membuat Import Data Dari CSV dengan Codeigniter dan PHPExcel
  • Cara Membuat atau Mengubah Password dengan MD5 di PHPMyAdmin

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_csv/. 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_csv/. Berikut ini tampilan dan kodenya :

Cara menggunakan mysql output to csv

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    <title>Export Data ke CSV 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 CSV 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 CSV</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.

Baca Juga:

  • Tutorial Codeigniter Bahasa Indonesia Lengkap Plus Source Code
  • Tutorial PHP Bahasa Indonesia Lengkap Plus Source Code
  • Cara Membuat CRUD Tanpa Refresh dengan Codeigniter dan Bootstrap
  • Cara Membuat Upload Gambar dengan PHP dan MySQL


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

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

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

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

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

// Buat header tabel nya pada baris ke 1
$csv->setActiveSheetIndex(0)->setCellValue('A1', "NO"); // Set kolom A1 dengan tulisan "NO"
$csv->setActiveSheetIndex(0)->setCellValue('B1', "NIS"); // Set kolom B1 dengan tulisan "NIS"
$csv->setActiveSheetIndex(0)->setCellValue('C1', "NAMA"); // Set kolom C1 dengan tulisan "NAMA"
$csv->setActiveSheetIndex(0)->setCellValue('D1', "JENIS KELAMIN"); // Set kolom D1 dengan tulisan "JENIS KELAMIN"
$csv->setActiveSheetIndex(0)->setCellValue('E1', "TELEPON"); // Set kolom E1 dengan tulisan "TELEPON"
$csv->setActiveSheetIndex(0)->setCellValue('F1', "ALAMAT"); // Set kolom F1 dengan tulisan "ALAMAT"

// 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 = 2; // Set baris pertama untuk isi tabel adalah baris ke 2
while($data = $sql->fetch()){ // Ambil semua data dari hasil eksekusi $sql
  $csv->setActiveSheetIndex(0)->setCellValue('A'.$numrow, $no);
  $csv->setActiveSheetIndex(0)->setCellValue('B'.$numrow, $data['nis']);
  $csv->setActiveSheetIndex(0)->setCellValue('C'.$numrow, $data['nama']);
  $csv->setActiveSheetIndex(0)->setCellValue('D'.$numrow, $data['jenis_kelamin']);
  
  // Khusus untuk no telepon. kita set type kolom nya jadi STRING
  $csv->setActiveSheetIndex(0)->setCellValueExplicit('E'.$numrow, $data['telp'], PHPExcel_Cell_DataType::TYPE_STRING);
  
  $csv->setActiveSheetIndex(0)->setCellValue('F'.$numrow, $data['alamat']);
  
  $no++; // Tambah 1 setiap kali looping
  $numrow++; // Tambah 1 setiap kali looping
}

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

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

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

$write = new PHPExcel_Writer_CSV($csv);
$write->save('php://output');
?>

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

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

Cara menggunakan mysql output to csv

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

Mungkin itu tambahan penjelasan dari skrip proses export ke CSV 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 mengunduh source code nya, klik salah satu link dibawah ini
– Download versi PDO : Link download yang sesuai tutorial ini yakni menggunakan fungsi PDO untuk query ke databasenya
– Download versi MySQLi : Link download untuk Anda yang ingin source code versi MySQLi dari tutorial ini

Tutorial membuat export data ke CSV dengan plugin PHPExcel, Tutorial membuat laporan CSV dengan PHPExcel, Cara membuat laporan CSV dengan PHPExcel, Tutorial membuat export data dari database ke CSV dengan PHPExcel, Cara membuat export data dari database ke CSV dengan PHPExcel, Source code export data dari database ke CSV dengan PHPExcel