Cara menggunakan phpspreadsheet create excel

Tulisan ini akan mengajarkan kepada pembaca bagaimana mengexport data ke format excel dengan menggunakan PHP 7 dan PhpSpreadsheet, sangat berguna jika web app anda ingin ditambahkan fasilitas export ke format excel. PhpSpreadsheet adalah library php murni yang digunakan untuk membaca dan menulis file excel, baik format excel lama (.xls) maupun format excel terbaru (.xlsx), jadi PhpSpreadsheet ini bisa digunakan untuk mengimport file excel ke web app (untuk kemudian disimpan ke database misalnya) atau untuk mengexport data web app (biasanya dari database) ke file execel. tetapi pada tulisan ini hanya mengjarkan cara export saja, untuk importnya akan kami bahas dikemudian hari, insya allah.

Pertama kita install atau download dulu library PhpSpreadsheet dengan composer. Untuk bahan coba-coba, kita bikin saja folder baru misal test, kemudian copas hasil download ada ke folder test tersebut. Kemudian buat file php, misal test.php dengan text editor anda. Kemudian buka command prompt anda dan masuk ke folder test yang sudah anda buat seperti ini

Cara menggunakan phpspreadsheet create excel

Pastikan anda punya koneksi internet, karena composer akan mendownload libray PhpSpreadsheet dari internet. Kemudian buka file test.php dan ketik kode berikut

<?phprequire 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet();        $sheet = $spreadsheet->getActiveSheet();        $sheet->setCellValue('A1', 'No');        $sheet->setCellValue('B1', 'Nama');        $sheet->setCellValue('C1', 'Kelas');        $sheet->setCellValue('D1', 'Alamat');        $sheet->setCellValue('E1', 'Wali');        $sheet->setCellValue('F1', 'No HP');        $no = 2;//$siswa adalah data dari hasil quiery mysql        foreach ($siswa as $key => $value) {            $sheet->setCellValue('A' . $no, $no);            $sheet->setCellValue('B' . $no, $value->nama);            $sheet->setCellValue('C' . $no, $value->kelas);            $sheet->setCellValue('D' . $no, $value->alamat);            $sheet->setCellValue('E' . $no, $value->wali);            $sheet->setCellValue('F' . $no, $value->handphone);            $no++;        }        $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);        header('Content-Type: application/vnd.ms-excel');        header('Content-Disposition: attachment; filename="data-siswa.xlsx"');        $writer->save("php://output");

Contoh diatas misalnya kira sudah punya data siswa dari mysql yang tersimpan dalam variabel $siswa, Nah sekarang coba kunjungi file anda dalam web browser anda, maka akan keluar notifikasi untuk download file excel dengan nama data-siswa.xlsx

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);

Artikel Terkait: Membuat File docx, xlsx, pptx Secara Terprogram dengan CodeIgniter dan PHPOffice (berqas.com)

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