Begini kira-kira Generate SK massal dengan template simpan massal ke ZIP
- Instalasi PHPWord Jika belum terpasang, install PHPWord dengan Composer:
composer require phpoffice/phpword
- Script PHP untuk Generate dan ZIP Buat file generate_sk_massal.php dengan isi berikut:
<?php
require 'vendor/autoload.php'; // Jika menggunakan Composer
use PhpOffice\PhpWord\TemplateProcessor;
use ZipArchive;
// Data pegawai (bisa dari database)
$dataPegawai = [
['nama' => 'Budi Santoso', 'nip' => '123456789', 'jabatan' => 'Analis Kepegawaian', 'alamat' => 'Jl. Merdeka No. 45'],
['nama' => 'Siti Rahmawati', 'nip' => '987654321', 'jabatan' => 'Kasubag Kepegawaian', 'alamat' => 'Jl. Diponegoro No. 10'],
['nama' => 'Joko Priyanto', 'nip' => '112233445', 'jabatan' => 'Staff Administrasi', 'alamat' => 'Jl. Sudirman No. 20'],
];
// Lokasi template DOCX
$templatePath = 'templates/template.docx';
// Folder sementara untuk menyimpan SK sebelum dikompresi
$tempDir = 'temp_sk';
if (!file_exists($tempDir)) {
mkdir($tempDir, 0777, true);
}
// Buat file DOCX untuk setiap pegawai
$files = [];
foreach ($dataPegawai as $pegawai) {
$fileName = $tempDir . "/SK_{$pegawai['nip']}.docx";
$templateProcessor = new TemplateProcessor($templatePath);
foreach ($pegawai as $key => $value) {
$templateProcessor->setValue($key, $value);
}
$templateProcessor->saveAs($fileName);
$files[] = $fileName;
}
// Buat file ZIP
$zipFile = 'sk_massal.zip';
$zip = new ZipArchive();
if ($zip->open($zipFile, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
foreach ($files as $file) {
$zip->addFile($file, basename($file));
}
$zip->close();
}
// Hapus file DOCX sementara
foreach ($files as $file) {
unlink($file);
}
rmdir($tempDir);
// Berikan file ZIP untuk diunduh
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . $zipFile . '"');
header('Content-Length: ' . filesize($zipFile));
readfile($zipFile);
// Hapus file ZIP setelah diunduh
unlink($zipFile);
exit;
- Cara Menggunakan
- Pastikan ada file template template.docx di folder templates/.
- Jalankan script di browser
http://localhost/generate_sk_massal.php
- Hasilnya: File ZIP akan terunduh, berisi banyak SK dalam format DOCX.
Penjelasan Kode
- Looping $dataPegawai: Membuat SK dari template untuk setiap pegawai.
- saveAs($fileName): Menyimpan setiap SK ke folder temp_sk/.
- ZipArchive: Mengompresi semua file DOCX ke dalam file ZIP.
- header(): Mengirim file ZIP untuk diunduh oleh pengguna.
- Pembersihan otomatis: Menghapus file DOCX sementara dan ZIP setelah diunduh.
💡 Bisa dikembangkan:
- Ambil data pegawai dari database.
- Tambahkan nomor SK otomatis.
- Gunakan format PDF jika diperlukan.
Top comments (0)