PHP Excel Class Tutorial 2: Tiga Cara Mengisi Teks atau Value Ke Dalam Cell

Dalam tutorial sebelumnya tentang PHPExcel, telah dibahas oleh admin mengenai cara membuat workbook dan membuat worksheet di dalamnya. 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.

Untuk mengisi teks atau value ke dalam cell menggunakan PHP Excel 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.

Sumber :

0 Response to "PHP Excel Class Tutorial 2: Tiga Cara Mengisi Teks atau Value Ke Dalam Cell"

Posting Komentar