Read and Write Dokumen Ms. Word (.doc) Pada Java Menggunakan Library Apache POI

Table of Contents
Alhamdulillah, segala puji bagi Allah SWT atas nikmat-Nya, anda bisa mampir di artikel saya. Artikel ini saya khususkan sebagai tutorial read (membaca file) dan write (membuat file) untuk dokumen Ms. Word versi lama (.doc) pada pemrograman java menggunakan library khusus bernama Apache POI. Hal ini penting untuk saya tulis mengingat tutorial berbahasa indonesia jumlahnya terbatas, kalaupun sudah ada, semoga ini jadi bumbu pelengkap para pencari tutorial. Mengapa hanya doc file saja, padahal Ms. Word terbaru berekstensi .docx? Sabar, satu-satu bung. Kalau artikel ini selesai, bisa saya lanjutkan untuk read dan write docx file. Bahkan rencananya saya buatkan versi video juga, yang di-upload di Channel Yt. Karena terkendala jaringan internet, biarlah tulisan yang berbicara.  

File dokumen seperti Ms. Word berperan besar dalam hal input/output data, terutama ketika kita sudah menggunakan algoritma tertentu untuk tugas akhir. Pengalaman yang pernah saya alami adalah menggunakan Ms. Word sebagai input dan output dokumen pada ilmu persandian data (Kriptografi), apapun algoritmanya. Bahkan mungkin saja implementasinya lebih luas dari itu, menyebar di berbagai bidang ilmu komputer. Silakan anda explore sendiri.

Baiklah, kita mulai pelan-pelan.

Read

Maksud dari read adalah membaca file. File apa? ya tergantung pembahasan. Berhubung bahasan kita adalah doc file berarti read yang dimaksud adalah membaca doc file. Read ini harus konsisten, jika hanya untuk doc file, berarti ekstensi lain tidak akan pernah bisa di-read, karena beda mekanisme. Contoh lain dari read adalah read txt file. Read txt file jauh lebih mudah daripada doc file, karena tidak membutuhkan library khusus. Sementara read doc membutuhkannya. Hikmah adanya library ini adalah mempermudah pekerjaan programmer. Kita tinggal menuliskan coding tertentu yang sudah dipahami library. Tujuan tercapai dengan coding yang lebih ringkas. Silakan unduh dulu library khusus read doc di libDocRead.rar.

Setelah diunduh, letakkan folder libDocRead sesuai dengan tempat penyimpanan anda, tidak ada ketentuan khusus. Namun, saya menyarankan agar folder library disimpan di dalam folder project java anda. Jika anda belum membuat project baru silahkan dibuat dulu, jika sudah ada project letakkan di folder project seperti pada Gambar 1. Mengapa demikian? Jika suatu project membutuhkan library (sebagaimana pembahasan di artikel ini), maka library akan senantiasa tersimpan di folder project anda. Pun jika project di copy ke komputer lain tidak ada terjadi error.  Hal ini berbeda jika library disimpan di Disk D atau E. Project akan error jika di copy ke komputer lain. Ini terkait kemudahan saja, terserah mau ditiru apa tidak.

Gambar 1. Penempatan Library pada Java Project

Kemudian, pada project java anda, perhatikan folder Libraries, klik kanan dan pilih Add JAR/Folder, ambil semua file jar pada folder libDocRead hingga muncul tampilan sebagaimana Gambar 2.

Gambar 2. Penambahan Library untuk Read Doc

Perjalanan belum selesai. Bagian inti artikel ini adalah bagaimana source code-nya? Langsung saja tulis source code untuk read doc file dibawah ini. Agar source code tampil lebih indah dengan syntax berwarna-warni, ganti https ke http biasa.

Ingat! ditulis, bukan dicopas! Hayati perjuangan anda dengan menuliskan code, copas hanya membuat anda jadi manja. Udah manja tak paham pula, parah kan? 

 
public class ReadDoc {

    public static void main(String[] args) {

        File filenya = new File("D://readDoc.doc");
        WordExtractor extractor = null;
        try {
            FileInputStream fis = new FileInputStream(filenya.getAbsolutePath());
            HWPFDocument document = new HWPFDocument(fis);
            extractor = new WordExtractor(document);
            String fileText = extractor.getText();
            System.out.println(fileText);
        } catch (Exception exep) {
            exep.printStackTrace();
        }
    }
}

Selesai tulis code, siapkan file doc yang ingin anda read. Sesuaikan dengan direktori anda. File doc yang saya buat, diletakkan di Disk D. Ketika program di-running, output tampil seperti Gambar 3.

Gambar 3. Output Doc Read


Write

Write adalah kebalikan dari read. Write secara bahasa berarti menulis, artinya menuliskan suatu teks untuk dibuat file berekstensi khusus, dalam hal ini write dikhususkan untuk membuat doc file. Unduh Library khusus write doc di libDocWrite. Tiru sebagaimana langkah-langkah pada proses Read doc hingga sesuai dengan Gambar 4.

Gambar 4. Penempatan Library untuk Write doc

Tulis source code untuk write doc file berikut:

 
public class WriteDoc {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        Properties prop = new Properties();
        prop.setProperty("log4j.rootLogger", "WARN");

        String teks = "Prodi Ilmu Komputer" ;
        String outDocEn = "D://writeDoc.doc";
        XWPFDocument document = new XWPFDocument();
        FileOutputStream out = new FileOutputStream(new File(outDocEn));
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText(teks);
        document.write(out);
        out.close();
        System.out.println("Generate DOC sukses");
    }
}

Code write diatas dimaksudkan untuk write doc file yang tersimpan di direktori Disk D. File doc yang terbentuk berisikan teks "Prodi Ilmu Komputer". Bisa anda sesuaikan dengan teks masing-masing.

Referensi utama terkait read dan write doc file menggunakan apache poi dapat dibaca di situs resminya melalui https://poi.apache.org/components/document/. Diharapkan anda dapat memahami perbedaan mekanisme HWPF untuk read dan XWPF ketika write.

Jangan puas jika sudah berhasil mencoba. Tingkatkan kepuasan diri dengan memahami source code via membaca berbagai rujukan.

TUGAS

Buatlah Aplikasi konverter berbasis Graphical User Interface (GUI) untuk mengkonversi txt file ke doc file serta sebaliknya. Input txt file akan menghasilkan doc file. Sebaliknya input doc file menghasilkan txt file. Tugas bersifat individu sehingga tampilan program disesuaikan dengan kreasi masing-masing.

Semangat. Ayo tingkatkan semangat joeangmoe!!!

Penjelasan via Youtube

Penjelasan Konseptual

Penjelasan Praktik



Berikan komentar langsung dibawah jika ada kendala atau pertanyaan lebih lanjut. 
    

8 comments

Terima kasih telah mampir di blog kami. Jika ingin menghubungi penulis, silakan kirim pesan via email di kitainformatika@gmail.com atau via WA di 087750503014. Jika mood penulis lagi baik, biasanya fast respon.
Comment Author Avatar
March 18, 2020 at 8:41 PM Delete
Mohon maaf untuk tugasnya terakhir dikumpulkan kapan ya ?
Comment Author Avatar
March 19, 2020 at 10:28 AM Delete
Ketika kuliah tatap muka aktif, tugas akan direkap
Comment Author Avatar
Anonymous
March 18, 2020 at 8:42 PM Delete
mantap ilmunya gan
Comment Author Avatar
March 18, 2020 at 8:53 PM Delete
This comment has been removed by the author.
Comment Author Avatar
March 18, 2020 at 10:24 PM Delete
The best lecturer on the code :)
Comment Author Avatar
April 2, 2020 at 5:58 PM Delete
Selamat malam pak, Maaf saya mau bertanya.. Untuk kode yang dicontohkan diatas saya coba untuk membuat program convert ternyata yang bagian Read itu menghasilkan format .doc & yang readnya itu menghasilkan .docx.
Jadi Perbedaannya di HwpfDocument untuk .doc & XwpfDocument untuk .docx.
Apakah ada solusi untuk write .doc dengan Hwpf pak ?
Comment Author Avatar
April 7, 2020 at 12:45 PM Delete
Bagaimana bisa menghasilkan docx sedangkan jelas perintahnya untuk doc String outDocEn = "D://writeDoc.doc"; Logikanya pasti menghasilkan doc juga. xwpf itu bisa juga untuk doc, walaupun lebih cocok ke docx