Membuat File MS Office dengan CodeIgniter dan PHPOffice — Bagian II (PHPSpreadsheet)

PHPOffice adalah library PHP yang terdiri dari 3 bagian terpisah yaitu PHPWord, PHPSpreadsheet, dan PHPPresentation.

  • PHPWord untuk membaca dan menulis dokumen pengolah kata (docx/odt);
  • PHPSpreadsheet untuk membaca dan menulis dokumen spreadsheet (xlsx/ods);
  • PHPPresentation untuk membaca dan menulis dokumen presentasi (pptx/odp);

Pada bagian ini saya akan melakukan uji coba pembuatan file berformat xlsx secara terprogram yang didalamnya berisi teks hello world dengan bahasa pemprograman PHP, library PHPSpreadsheet dan framework CodeIgniter.

Yang perlu disiapkan adalah

  1. Apache Web Server dan PHP7 (atau pakai XAMPP);
  2. Text Editor kesukaanmu (saya pakai VS Code);
  3. CodeIgniter yang telah terdownload https://codeigniter.com/download , saya pakai versi 3.1.10
  4. Composer https://getcomposer.org/download/
  5. Browser (saya pakai Chrome)

Langkah-langkahnya:

  1. Siapkan project CodeIgniter baru atau yang sudah pernah dibuat. nama folder project saya adalah ciphpoffice. Buka dengan text editor kesukaanmu.
  2. Buka terminal/cmd dan arahkan ke dalam folder ciphpoffice atau bagi pengguna text editor VS Code cukup menekan tombol Ctrl+shift+`
Membuka terminal baru via VS Code

3. ketikan perintah ini pada terminal

composer require phpoffice/phpspreadsheet

tunggu proses installnya sampai selesai (membutuhkan waktu tergantung daripada koneksi internet)

4. Buka file application/config/config.php dan edit vendor directory path nya (jika sudah, skip langkah ini) menjadi

$config[‘composer_autoload’] = ‘vendor/autoload.php’;

5. Buat controller baru di folder application/controller dengan nama Excel.php, kode lengkapnya seperti ini

6. coba jalankan di browser dengan alamat http://127.0.0.1/ciphpoffice/index.php/excel maka file simple.xlsx akan terdownload

7. Coba kita buka dengan aplikasi Office

begitulah hasil sederhana nya

Penjelasan kode

saat akan memanggil kelas-kelas di PHPSpreadsheet, kita harus melakukan import menggunakan use …

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

Buat objek baru dari kelas Spreadsheet

$spreadsheet = new Spreadsheet();

menentukan value dari cell berdasarkan koordinat bisa menggunakan method setCellValue()

$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue(‘A1’, ‘Hello World !’);

Membuat objek baru dari kelas Xlsx

$writer = new Xlsx($spreadsheet);

Content-Dispotition header digunakan untuk menentukan nama file dan memaksa browser menampilkan dialog save, kita juga menentukan Content-Type dan Cache-Control nya

$filename = ‘simple’;
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename=”’. $filename .’.xlsx”’);
header(‘Cache-Control: max-age=0’);

terakhir kita panggil method save() dengan parameter php://output

$writer->save(‘php://output’);

Untuk teman2 yang mau bereksperimen dengan fitur yang lainnya, bisa cek dokumentasinya di

sekian dulu untuk part ini

Membuat File MS Office dengan CodeIgniter dan PHPOffice