Membuat laporan format Excel dengan Codeigniter? Kenapa tidak. Nah tutorial kali ini akan membahas tentang cara bagaimana membuat laporan format Excel dengan Codeigniter dan PHPSpreadsheet (dulu namanya PHPExcel). Selamat belajar ya, semoga bisa dan mudah dipraktekkan.
Mari kita mulai belajarnya.
Pastikan XAMPP Sudah aktif
Sebelum menginstall Composer, pastikan Anda telah menginstall XAMPP. Anda bisa mendownloadnya di link ini //www.apachefriends.org/index.html. Untuk proses installasi XAMPP silakan tonton di video ini ya.
Mengunduh Codeigniter versi terbaru
Silakan buka situs www.codeigniter.com, lalu unduh versi terbarunya. Dalam tutorial kali ini Codeigniter yang digunakan versi 3.1.8.
Mendownload Codeigniter – Kursus WebGL Java Web Media DepokMenginstall Codeigniter
Setelah proses download selesai, maka kita harus install Codeigniter tersebut.
- Buat folder laporanexcel pada folder xampp/htdocs Anda. Dalam contoh ini xampp diinstall pada directory D:/
- Extract file Codeigniter yang telah diunduh ke folder laporanexcel tersebut.
Mengetes hasil installasi Codeigniter
Untuk mengetes, buka browser web Anda, lalu ketik alamat //localhost/laporanexcel.
Kursus Codeigniter – Java Web Media DepokMengunduh PHPSpreadsheet dengan Composer
PHPSpreadsheet adalah library PHP yang berfungsi untuk mengelola file Excel dengan PHP. Anda bisa membaca situs resminya di //phpspreadsheet.readthedocs.io/en/develop/. Dahulunya PHPSpreadsheet ini adalah PHPExcel.
Untuk mengunduh PHPSpreadsheet, Anda harus menggunakan Composer. Cara installasi Composer silakan lihat pada tutorial: Cara install Composer di Windows.
Mempersiapkan folder untuk mengunduh
Sebelum mendownload, siapkan folder yang akan kita gunakan sebagai tempat penyimpanan dependensi file-file PHPSpreadsheet yang akan digunakan.
- Buat satu folder dengan nama excel di directory C:/ atau D:/ Anda.
- Dalam contoh ini digunakan directory D:/. Lihat gambar berikut untuk lebih jelasnya.
Mengunduh PHPSpreadsheet
Berikut langkah-langkah mengunduh PHPSpreadsheet dengan Composer:
- Klik Start Menu program Windows Anda, ketik CMD. Lalu klik program Command Prompt.
- Karena saya meletakkan folder excel di directory D:/, maka ketik kode d: pada perintah Command Prompt Anda. Tekan Enter
- Lalu ketik perintah cd excel, lalu tekan Enter lagi. Ini artinya kita change directory untuk mengakses folder excel yang telah dibuat.Instal PHPSpreadsheet with Composer – Java Web Media
- Lalu ketik perintah composer require phpoffice/phpspreadsheet. Lalu tekan Enter. Tunggu beberapa saat sampai proses download selesai.
- Jika proses download selesai, maka akan muncul gambar seperti ini.Install PHPSpreadsheet – Java Web Media
- Lalu periksa folder d:/excel yang telah kita buat sebelumnya. Maka di dalam folder tersebut akan ada beberapa file dan folder yang telah diunduh oleh composer.
Memindahkan atau Mengcopy folder excel ke folder laporanexcel
Setelah file-file dependensi PHPSpreadsheet sudah diunduh di folder excel, maka langkah selanjutnya adalah memindahkan atau mencopy folder excel tersebut ke instalasi Codeigniter di folder laporanexcel.
Mempersiapkan Database
Selanjutnya adalah mempersiapkan database. Buka PHPMyAdmin Anda dengan mengakses //localhost/phpmyadmin. Lalu buat database dengan nama laporanexcel.
Membuat database MySQL – Kursus Web Programming JakartaKemudian import sample database berikut ini:
CREATE TABLE `provinsi` ( `id_provinsi` varchar(2) NOT NULL, `nama_provinsi` tinytext NOT NULL, `aktif` enum('1','0','','') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data untuk tabel `provinsi` -- INSERT INTO `provinsi` (`id_provinsi`, `nama_provinsi`, `aktif`) VALUES ('11', 'Aceh', '1'), ('12', 'Sumatera Utara', '1'), ('13', 'Sumatera Barat', '1'), ('14', 'Riau', '1'), ('15', 'Jambi', '1'), ('16', 'Sumatera Selatan', '1'), ('17', 'Bengkulu', '1'), ('18', 'Lampung', '1'), ('19', 'Kepulauan Bangka Belitung', '1'), ('21', 'Kepulauan Riau', '1'), ('31', 'DKI Jakarta', '1'), ('32', 'Jawa Barat', '1'), ('33', 'Jawa Tengah', '1'), ('34', 'DI Yogyakarta', '1'), ('35', 'Jawa Timur', '1'), ('36', 'Banten', '1'), ('51', 'Bali', '1'), ('52', 'Nusa Tenggara Barat', '1'), ('53', 'Nusa Tenggara Timur', '1'), ('61', 'Kalimantan Barat', '1'), ('62', 'Kalimantan Tengah', '1'), ('63', 'Kalimantan Selatan', '1'), ('64', 'Kalimantan Timur', '1'), ('65', 'Kalimantan Utara', '1'), ('71', 'Sulawesi Utara', '1'), ('72', 'Sulawesi Tengah', '1'), ('73', 'Sulawesi Selatan', '1'), ('74', 'Sulawesi Tenggara', '1'), ('75', 'Gorontalo', '1'), ('76', 'Sulawesi Barat', '1'), ('81', 'Maluku', '1'), ('82', 'Maluku Utara', '1'), ('91', 'Papua Barat', '1'), ('92', 'Papua', '1'); -- -- Indexes for dumped tables -- -- -- Indexes for table `provinsi` -- ALTER TABLE `provinsi` ADD PRIMARY KEY (`id_provinsi`); COMMIT;Import database MySQL – Kursus WebGL DepokMaka akan menghasilkan database seperti di bawah ini:
Database Provinsi Se-Indonesia – Kursus Web DepokSetting Database, Config dan Autoload di Codeigniter
Setelah database dan semua file dependensi sudah siap, maka saatnya kita masuk ke Codeigniter.
Kursus Codeigniter – Java Web Media DepokBerikut langkah-langkah settingan Codeigniter yang harus dilakukan.
Setting config.php (di folder laporanexcel/application/config)
- Buka file config.php di folder laporanexcel/application/config
- Ubah kode (kira-kira pada baris 26) dari $config[‘base_url’] = ”;
menjadi $config[‘base_url’] = ‘//localhost/laporanexcel’; - Simpan file tersebut
Setting autoload.php (di folder laporanexcel/application/config)
- Buka file autoload.php di folder laporanexcel/application/config
- Ubah kode (kira-kira pada baris 61) dari $autoload[‘libraries’] = array();
menjadi $autoload[‘libraries’] = array(‘database’); - Ubah kode (kira-kira pada baris 92) dari $autoload[‘helper’] = array();
menjadi $autoload[‘helper’] = array(‘url’); - Simpan file tersebut
Setting database.php (di folder laporanexcel/application/config)
- Buka file database.php di folder laporanexcel/application/config
- Ubah kode ini:
‘hostname’ => ‘localhost’,
‘username’ => ”,
‘password’ => ”,
‘database’ => ”, - Menjadi seperti ini:
‘hostname’ => ‘localhost’,
‘username’ => ‘root’,
‘password’ => ”,
‘database’ => ‘laporanexcel’, - Simpan file tersebut
Membuat Model Provinsi_model.php di folder laporanexcel/application/models
Model berisi query database yang akan ditarik.
- Buat file baru dengan nama Provinsi_model.php (ingat, huruf pertama harus capital) di folder laporanexcel/application/models.
- Lalu ketik kode ini:
Kode Provinsi_model.php:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Provinsi_model extends CI_Model { public function __construct() { parent::__construct(); $this->load->database(); } // Listing public function listing() { $this->db->select('*'); $this->db->from('provinsi'); $this->db->order_by('id_provinsi', 'ASC'); $query = $this->db->get(); return $query->result(); } } /* End of file Provinsi_model.php */ /* Location: ./application/models/Provinsi_model.php */Membuat Controller Laporan.php di folder laporanexcel/application/controllers
Controller berisi fungsi untuk diakses di URL (Alamat website).
- Buat file Laporan.php di folder laporanexcel/application/controllers
- Ketik kode ini
- Simpan file
Berikut kode Laporan.php:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); // Load library phpspreadsheet require('./excel/vendor/autoload.php'); use PhpOffice\PhpSpreadsheet\Helper\Sample; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; // End load library phpspreadsheet class Laporan extends CI_Controller { // Load model public function __construct() { parent::__construct(); $this->load->model('provinsi_model'); } // Main page public function index() { $provinsi = $this->provinsi_model->listing(); $data = array( 'title' => 'Laporan Exel - Java Media', 'provinsi' => $provinsi ); $this->load->view('laporan', $data, FALSE); } // Export ke excel public function export() { $provinsi = $this->provinsi_model->listing(); // Create new Spreadsheet object $spreadsheet = new Spreadsheet(); // Set document properties $spreadsheet->getProperties()->setCreator('Andoyo - Java Web Media') ->setLastModifiedBy('Andoyo - Java Web Medi') ->setTitle('Office 2007 XLSX Test Document') ->setSubject('Office 2007 XLSX Test Document') ->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.') ->setKeywords('office 2007 openxml php') ->setCategory('Test result file'); // Add some data $spreadsheet->setActiveSheetIndex(0) ->setCellValue('A1', 'KODE PROVINSI') ->setCellValue('B1', 'NAMA PROVINSI') ; // Miscellaneous glyphs, UTF-8 $i=2; foreach($provinsi as $provinsi) { $spreadsheet->setActiveSheetIndex(0) ->setCellValue('A'.$i, $provinsi->id_provinsi) ->setCellValue('B'.$i, $provinsi->nama_provinsi); $i++; } // Rename worksheet $spreadsheet->getActiveSheet()->setTitle('Report Excel '.date('d-m-Y H')); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $spreadsheet->setActiveSheetIndex(0); // Redirect output to a client’s web browser (Xlsx) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="Report Excel.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); exit; } } /* End of file Laporan.php */ /* Location: ./application/controllers/Laporan.php */Membuat view laporan_view.php di folder laporalexcel/application/views
Views berisi file tampilan laporan.
- Buat file laporan_view.php di folder laporanexcel/application/views
- Ketik kode ini
- Simpan file
Berikut kode laporan_view.php:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title><?php echo $title ?></title> <style type="text/css" media="screen"> body { background-color: #EEE; font-family: Arial; } .container { width: 80%; padding: 20px; background-color: #fff; min-height: 300px; margin: 40px auto; border-radius: 10px; } table { border: solid thin #000; border-collapse: collapse; width: 100%; } tr { border-collapse: collapse; } td,th { padding: 6px 12px; border-bottom: solid thin #EEE; text-align: left; } </style> </head> <body> <div class="container"> <h1><?php echo $title ?></h1> <p><a href="<?php echo base_url() ?>index.php/laporan/export">Export ke Excel</a></p> <table> <thead> <tr> <th width="5%">KODE</th> <th>NAMA PROVINSI</th> </tr> </thead> <tbody> <?php foreach($provinsi as $provinsi) { ?> <tr> <td><?php echo $provinsi->id_provinsi ?></td> <td><?php echo $provinsi->nama_provinsi ?></td> </tr> <?php } ?> </tbody> </table> </div> </body> </html>Mengetes Hasil pengetikan kode dan Export Excel
Untuk mengetes, buka browser Anda, lalu ketik alamat //localhost/laporan/index.php/laporan. Lalu untuk mengetesnya, klik link Export Excelatau akses alamat //localhost/laporan/index.php/laporan/export.