Membuat Variabel Dinamis Pada Dokumen Word (docx)

Adalah hal menyebalkan ketika kita diminta membuat dokumen kenaikan pangkat/jenjang dalam organisasi. Karena jamannya online,  kita diminta mengedit dokumen docx dan menyerahkan ke pimpinan. Online yang setengah-setengah :). Kalau online beneran ya pakai databaselah, bukan nyerahin file docx 🙂

Bayangkan jika satu orang harus melampirkan 2 dokumen saja,  30 orang sudah 60 dokumen, Membuka 60 file word satu-satu maaaaak. Ampuuun….

Apalagi kalau harus ada yang diupdate di semua dokumen karena ada format dokumen yang salah, ada yang harus diedit. Buka – edit – simpan 60 dokumen. Ampuuun Caaaak.

Kadang tidak sampai disitu, data harus direkap dalam bentuk tabel spreadsheet. Buka satu-satu copas … hadooh…

Sampai disitu ada instruksi nama file harus urut abjat nama orang. Ngiiing ….

Lebih enak bahwa semua data itu kita masukkan database atau Google Sheet yang diisi melalui Google Form. Lalu kita membuat template word. Dan terakhir kita sambungkan data dengan template word  menggunakan skrip.

Ya, kamu bisa membuat template pada file .docx dengan variabel dinamis menggunakan berbagai metode. Ini berguna untuk menghasilkan dokumen otomatis berdasarkan data tertentu, seperti surat, laporan, atau faktur. Berikut adalah pendekatan yang dapat digunakan:


1. Menggunakan Placeholder pada .docx

Anda bisa menambahkan teks placeholder di file .docx yang akan digantikan dengan data dinamis. Contoh:

  • Tambahkan teks seperti {{nama}}, {{tanggal}}, atau {{alamat}} ke dokumen.

2. Menggunakan Python dengan Library python-docx

Python menyediakan library bernama python-docx untuk memanipulasi file .docx, termasuk mengganti placeholder dengan data dinamis.

Contoh:

from docx import Document

# Buka file template
doc = Document('template.docx')

# Ganti placeholder
for paragraph in doc.paragraphs:
    if '{{nama}}' in paragraph.text:
        paragraph.text = paragraph.text.replace('{{nama}}', 'Teguh')
    if '{{tanggal}}' in paragraph.text:
        paragraph.text = paragraph.text.replace('{{tanggal}}', '07 Januari 2025')

# Simpan file baru
doc.save('output.docx')

3. Menggunakan Mail Merge

Jika Anda menggunakan Microsoft Word, fitur Mail Merge memungkinkan pengisian data dinamis dari sumber seperti Excel atau database.

Langkah-Langkah:

  1. Siapkan template .docx dengan placeholder menggunakan <<FieldName>>.
  2. Hubungkan dokumen ke file Excel atau sumber data lainnya.
  3. Gunakan fitur Mail Merge di Word untuk menghasilkan dokumen.

4. Menggunakan Library untuk Framework Lain

Jika Anda bekerja dengan teknologi lain:

4.1. Contoh dengan PHP Word

Berikut adalah contoh penggunaan PHPWord untuk membuat file .docx dengan variabel dinamis menggunakan template:

Instalasi PHPWord

  1. Install PHPWord menggunakan Composer:
    composer require phpoffice/phpword
    
  2. Siapkan template .docx:
    • Buat file template.docx dengan placeholder, misalnya:
      Halo, {{nama}}!
      Selamat datang di {{tempat}} pada {{tanggal}}.
      

Contoh Kode PHPWord

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpWord\TemplateProcessor;

// Load template
$templateProcessor = new TemplateProcessor('template.docx');

// Ganti placeholder dengan data dinamis
$templateProcessor->setValue('nama', 'Teguh');
$templateProcessor->setValue('tempat', 'Kantor Pusat');
$templateProcessor->setValue('tanggal', date('d F Y'));

// Simpan file output
$outputFile = 'output.docx';
$templateProcessor->saveAs($outputFile);

echo "File berhasil dibuat: <a href='$outputFile'>Download</a>";
?>

Contoh File template.docx

Isi template bisa seperti ini:

Halo, {{nama}}!
Selamat datang di {{tempat}} pada {{tanggal}}.

Hasil output.docx setelah menjalankan script:

Halo, Teguh!
Selamat datang di Kantor Pusat pada 07 Januari 2025.

4.2. Contoh dengan docxtemplater:

const Docxtemplater = require('docxtemplater');
const PizZip = require('pizzip');
const fs = require('fs');

const content = fs.readFileSync('template.docx', 'binary');
const zip = new PizZip(content);
const doc = new Docxtemplater(zip);

// Set data
doc.setData({
    nama: 'Teguh',
    tanggal: '07 Januari 2025',
    alamat: 'Jl. Merdeka No. 10'
});

// Generate file
doc.render();
const buf = doc.getZip().generate({ type: 'nodebuffer' });
fs.writeFileSync('output.docx', buf);

5. Manfaatkan Variabel Dinamis Langsung dalam Aplikasi

Jika Anda menggunakan aplikasi tertentu untuk membuat dokumen otomatis, seperti:

  • LimeSurvey untuk survei.
  • Google Docs API untuk dokumen online.
  • Atau tools otomatisasi seperti Zapier atau Integromat.

Ok, terimakasih (cakedAI)