Cara Mengisi Teks atau Value Ke Dalam Cell Excell Pada PHP - Berikutnya dalam tutorial kali ini akan dibahas bagaimana cara menuliskan atau mengisi teks atau value ke dalam cell dalam dokumen Excel yang digenerate melalui PHPExcel. Dalam tutorial sebelumnya tentang PHPExcel, telah dibahas mengenai cara membuat workbook dan membuat worksheet di dalamnya.
Lihat Juga Artikel Yang Terkait
|
---|
Untuk mengisi teks atau value ke dalam cell menggunakan PHPExcel cukup mudah. Ada 3 alternatif cara untuk melakukan hal ini, yaitu dengan menggunakan perintah:
$objPHPExcel->getSheet(indexsheet)->setCellValue('namacell', 'value');
Keterangan:
indexsheet: berupa bilangan bulat 0, 1, … yang menunjukkan nomor urut sheet yang mau disisipi teks dalam cellnya
namacell: merupakan nama cell di mana teks atau value akan disisipkan, misalnya cell A1, B2, dst…
value: teks atau value yang akan disisipkan ke dalam cell
Contoh penggunaan :
<?php require_once 'Classes/PHPExcel.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getSheet(0)->setTitle('Sheet Ke-1'); // Menambahkan value di sheet pertama pada cell A1 $objPHPExcel->getSheet(0) ->setCellValue('A1', 'Ini isi cell A1'); // mengeset sheet pertama yang aktif $objPHPExcel->setActiveSheetIndex(0); // output file dengan nama file 'contoh.xls' header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="contoh.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; ?>
Jika script di atas dijalankan, maka akan diperoleh file excel dg isi seperti pada gambar di bawah ini:
Kita dapat juga mengisi beberapa value dalam beberapa cell pada satu sheet sekaligus dalam sekali perintah. Contohnya:
$objPHPExcel->getSheet(0) ->setCellValue('A1', 'Ini isi cell A1') ->setCellValue('A2', 'Ini isi cell A2') ->setCellValue('B1', 'Ini isi cell B1') ->setCellValue('B1', 'Ini isi cell B1');
Adapun cara kedua untuk mengisi teks atau value ke dalam cell adalah dengan perintah sbb:
$objPHPExcel->getSheet(indexsheet)->setCellValueByColumnAndRow(nokolom, nobaris, value);
Keterangan:
indexsheet: nomor index sheet
nokolom: nomor kolom cell
nobaris: nomor baris cell
value: teks atau value yang akan diisikan ke dalam cell
Perintah di atas digunakan untuk menyisipkan teks ke dalam cell berdasarkan koordinat nomor baris dan kolom, di mana penomoran dimulai dari 0 (untuk nomor kolom), dan 1 (untuk nomor barisnya). Sebagai contoh, misalkan akan diisi teks ke dalam cell A1 pada sheet 1, maka kita bisa tuliskan perintah sbb:
$objPHPExcel->getSheet(0)->setCellValueByColumnAndRow(0, 1, 'ini isi cell A1');
Kita juga bisa membuat perintah untuk beberapa cell sekaligus. Contohnya:
$objPHPExcel->getSheet(0) ->setCellValueByColumnAndRow(0, 1, 'ini isi cell A1') ->setCellValueByColumnAndRow(1, 3, 'ini isi cell B3') ->setCellValueByColumnAndRow(2, 4, 'ini isi cell C4');
Terakhir, cara ke tiga adalah dengan menggunakan perintah:
$objPHPExcel->getSheet(indexsheet)->setCellValueExplicit('namacell', 'value', 'tipe data');
Keterangan:
indexsheet: nomor index sheet
namacell: nama cell, misalkan A1, A2, dst.
tipedata: tipe data dari valuenya, yaitu bisa NUMERIC (ditulis: PHPExcel_Cell_DataType::TYPE_NUMERIC) atau STRING (ditulis: PHPExcel_Cell_DataType::TYPE_STRING).
Contoh penggunaan:
// perintah untuk menulis teks '123' dalam bentuk string (bukan number) $objPHPExcel->getSheet(0) ->setCellValueExplicit('B3', '123', PHPExcel_Cell_DataType::TYPE_STRING);
Mudah bukan membuatnya? OK sekarang bagaimana jika kita ingin mengisi cell-cell nya dengan data dari database? Penerapan hal ini contohnya pada proses export data ke Excel. Untuk melakukan hal ini, pada prinsipnya adalah mudah yaitu cukup kita letakkan perintah-perintah di atas ke dalam suatu looping, kemudian kita mainkan nomor barisnya saja mengikuti setiap perulangan datanya.
Berikut ini adalah contoh script untuk mengeksport data yang ada dalam suatu database MySQL ke Excel dengan PHPExcel.
<?php require_once 'Classes/PHPExcel.php'; // koneksi ke database mysql_connect('namahost', 'dbusername', 'dbpass'); mysql_select_db('dbname'); // membuat obyek dari class PHPExcel $objPHPExcel = new PHPExcel(); // memberi nama sheet pertama dengan nama 'MAHASISWA' $objPHPExcel->getSheet(0)->setTitle('MAHASISWA'); // Membuat sheet kedua dengan nama 'DOSEN' $myWorkSheet = new PHPExcel_Worksheet($objPHPExcel, 'DOSEN'); $objPHPExcel->addSheet($myWorkSheet, 1); // Menambahkan kolom untuk data mahasiswa di sheet pertama $objPHPExcel->getSheet(0) ->setCellValue('A1', 'NIM') ->setCellValue('B1', 'NAMA MAHASISWA') ->setCellValue('C1', 'TINGGI BADAN'); // menampilkan data mahasiswa dari db ke sheet pertama $query = "SELECT * FROM mhs"; $hasil = mysql_query($query); $baris = 2; while ($data = mysql_fetch_array($hasil)) { $objPHPExcel->getSheet(0) ->setCellValue('A'.$baris, $data['NIM']) ->setCellValue('B'.$baris, $data['NAMAMHS']) ->setCellValue('C'.$baris, $data['TINGGI']); // nomor baris bertambah $baris++; } // Menambahkan kolom untuk data dosen di sheet kedua $objPHPExcel->getSheet(1) ->setCellValue('A1', 'KODE DOSEN') ->setCellValue('B1', 'NAMA DOSEN'); // menyisipkan data dosen ke dalam cell $query = "SELECT * FROM dosen"; $hasil = mysql_query($query); $baris = 2; while ($data = mysql_fetch_array($hasil)) { $objPHPExcel->getSheet(1) ->setCellValue('A'.$baris, $data['KODEDOSEN']) ->setCellValue('B'.$baris, $data['NAMADOSEN']); $baris++; } // mengeset sheet pertama yang aktif $objPHPExcel->setActiveSheetIndex(0); // output file dengan nama file 'contoh.xls' header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="contoh.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; ?>
Script di atas akan mengenerate sebuah file excel berisi data mahasiswa dan dosen. Data mahasiswa akan diisikan ke dalam sheet pertama dan data dosen pada sheet kedua. Data mahasiswa tersebut bersumber dari database MySQL pada tabel ‘mhs’ dengan struktur field terdiri dari: NIM, NAMAMHS, TINGGI. Adapun data dosen bersumber dari tabel ‘dosen’ dengan field: KODEDOSEN, NAMADOSEN.
Tampilan dari script di atas adalah sbb:
Mudah bukan membuatnya? Contoh script di atas untuk kasus mengenerate data ke dalam cell secara vertikal. Lantas bagaimana jika mengisi data ke cell secara horizontal dengan looping? Untuk melakukan hal ini, tentunya agak sulit jika menggunakan
setCellValue()
. Alternatifnya kita bisa gunakan setCellValueByColumnAndRow()
karena koordinat cell menggunakan angka baik untuk kolom maupun barisnya. Sehingga untuk mengisi cell secara horizontal melalui looping bisa lebih mudah.