Cara Format Cell dalam Worksheet Excel Pada PHP - Pada artikel ini akan menjelaskan bagaimana cara memformat cell, seperti mengatur tinggi atau lebar cell, mengatur lebar cell supaya otomatis mengikuti panjang teks dalam cell, bagaimana memberikan border pada cell, bagaimana memberi background warna cell dan juga bagaimana cara melakukan merge beberapa cell.
Lihat Juga Artikel Yang Terkait |
---|
Mengatur Lebar Cell
Untuk mengatur lebar dari cell, kita menggunakan method
setWidth(n)
di mana n adalah nilai lebar cell dalam satuan pixel. Berikut ini adalah contohnya :$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(12);
Contoh di atas adalah perintah untuk mengatur lebar cell kolom ‘D’ pada sheet pertama dari workbook dengan lebar 12 pixel.
Cara di atas dilakukan apabila kita ingin menge-set lebar kolom cell secara manual yaitu dengan menentukan besaran pixel lebar kolomnya. Sekarang bagaimana jika kita ingin lebar kolomnya ini bisa diset secara otomatis mengikuti panjang string dalam cell? Caranya adalah dengan mengubah method
setWidth()
nya menjadi setAutoSize(true)
.$obyek->getSheet(0)->getColumnDimension('D')->setAutoSize(true);
Mengatur Tinggi Cell
Adapun untuk mengatur tinggi dari cell dengan PHPExcel hampir sama seperti mengatur lebar cell, yaitu dengan menggunakan perintah
setRowHeight(n)
.$objPHPExcel->getSheet(1)->getRowDimension('10')->setRowHeight(25);
Perintah di atas adalah untuk mengatur tinggi baris cell pada sheet ke-2 (index sheet ke-1) baris ke-10 dengan tinggi 25 pixel.
Memberi Border Cell
Untuk memberi border pada suatu cell, contoh perintah yang digunakan adalah sbb:
$objPHPExcel->getSheet(1)->getStyle('A3')->getBorders()->getAllBorders() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
Perintah di atas adalah untuk memberi border pada cell A3 yang ada di sheet ke-2 (index sheet ke-1), dengan sisi yang diberi border adalah sisi kanan, kiri, atas dan bawah (all borders), dan dengan style border berupa garis tipis (BORDER_THIN). Apabila diinginkan style border berupa garis tebal, maka gunakan BORDER_THICK.
Selanjutnya bagaimana jika diinginkan border hanya diberikan pada sisi kanan saja pada suatu cell, maka properti getAllBorders() diganti dengan getRight(), contohnya :
$objPHPExcel->getSheet(1)->getStyle('A3')->getBorders()->getRight() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
Selain getAllBorders() dan getRight(), properti lainnya untuk menentukan sisi mana dari cell yang mau diberikan garis border adalah getLeft(), getTop(), getBottom(), getDiagonal().
Kita juga bisa memberi border pada beberapa cell sekaligus, misalnya:
$objPHPExcel->getSheet(1)->getStyle('A3:C3')->getBorders()->getAllBorders() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
Dengan perintah di atas, maka border akan diberikan mulai dari cell A3 sampai dengan C3.
Selanjutnya, secara default warna dari border adalah hitam. Meskipun demikian, kita bisa memberi warna sembarang yang diinginkan. Bagaimana caranya? Ini dia contohnya:
$objPHPExcel->getSheet(1)->getStyle('A3:C3')->getBorders()->getAllBorders() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getSheet(0)->getStyle('A3:C3')->getBorders()->getAllBorders() ->getColor()->setRGB('CC0000');
Perintah di atas adalah contoh bagaimana memberi warna border pada cell A3 sd C3 yang ada di sheet pertama dengan warna RGB ‘CC0000′. Untuk mendapatkan variasi warna RGB, bisa dicek di colorpicker.com
Memberi Warna Background Cell
Sebuah cell, bisa pula kita beri warna pada background nya dengan perintah sbb:
$objPHPExcel->getSheet(1)->getStyle('A3:C3')->getBorders()->getAllBorders() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getSheet(0)->getStyle('A3:C3')->getBorders()->getAllBorders() ->getColor()->setRGB('CC0000');
Contoh perintah di atas digunakan untuk memberi warna background dengan warna RGB ‘CC0000′ pada cell A1 sd E1 pada sheet pertama. Dalam perintah tersebut, ‘FILL_SOLID’ menunjukkan bahwa warna background merupakan warna solid (bukan gradasi). Apabila ingin memberi warna gradasi, maka gunakan ‘FILL_GRADIENT_LINEAR’. Berikut ini contohnya:
$objPHPExcel->getSheet(0)->getStyle('A1:E1')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR); $objPHPExcel->getSheet(0)->getStyle('A1:E1')->getFill() ->getStartColor()->setRGB('000000'); $objPHPExcel->getSheet(0)->getStyle('A1:E1')->getFill() ->getEndColor()->setRGB('FFFFFF');
Perhatikan contoh di atas, karena warna background cell merupakan warna gradasi, maka perlu ditentukan warna awal dan warna akhirnya sehingga digunakan getStartColor() dan getEndColor().
Melakukan Merge/UnMerge Cell
Bagian terakhir dari artikel memformat cell ini adalah bagaimana cara melakukan merge dan unmerge cell. Untuk melakukan merge cell, contoh perintahnya adalah sbb:
$objPHPExcel->getSheet(1)->mergeCells('A18:A20');
Perintah di atas digunakan untuk melakukan merge pada cell A18 sd A20 pada sheet kedua dari workbook menjadi satu cell.
Sedangkan untuk melakukan unmerge cell, contohnya adalah:
$objPHPExcel->getSheet(1)->unmergeCells('A18:E22');
Mudah bukan cara memformat cell dalam PHPExcel? Berikut ini contoh full script PHP yang digunakan untuk mengenerate file excel dengan cell yang sudah diformat berdasarkan tutorial di atas.
<?php include 'Classes/PHPExcel.php'; // membuat obyek dari class PHPExcel $objPHPExcel = new PHPExcel(); // memberi nama sheet pertama dengan nama 'Sheet 1' $objPHPExcel->getSheet(0)->setTitle('Sheet 1'); $objPHPExcel->getSheet(0)->setCellValueByColumnAndRow(0, 1, "NIM") ->setCellValueByColumnAndRow(1, 1, "NAMA MAHASISWA") ->setCellValueByColumnAndRow(2, 1, "ALAMAT"); // membuat fill color background cell $objPHPExcel->getSheet(0)->getStyle('A1:C1')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR); $objPHPExcel->getSheet(0)->getStyle('A1:C1')->getFill() ->getStartColor()->setRGB('FFFFFF'); $objPHPExcel->getSheet(0)->getStyle('A1:C1')->getFill() ->getEndColor()->setRGB('F78B9D'); // auto width size kolom $objPHPExcel->getSheet(0)->getColumnDimension('A')->setAutoSize(true); $objPHPExcel->getSheet(0)->getColumnDimension('B')->setAutoSize(true); $objPHPExcel->getSheet(0)->getColumnDimension('C')->setAutoSize(true); // memberi border dari A1 sd C5 $objPHPExcel->getSheet(0)->getStyle('A1:C5')->getBorders() ->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getSheet(0)->getStyle('A1:C5')->getBorders() ->getAllBorders()->getColor()->setRGB('0717F7'); // output file dengan nama file 'contoh.xlsx' (excel 2007) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="myfile.xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit; ?>
Tampilan hasil file excel yang diperoleh sebagai hasil dari script di atas adalah seperti di bawah ini