Şub
1
2016

JAVA ile Otomatik Word Dokümanı Oluşturma

JAVA ile otomatik olarak word dokumanları oluşturmanız gerekirse, hatta JAVA ile MS office programları ile iligli herhangi bir işlem yapmanız gerektiğinde sizlere Apache POI kütüphanesini kullanmanızı şiddetle tavsiye ederim. POI kütüphanesi JAVA ile MS Office programları üzerinde (word, excel, etc.) işlem yapmanızı oldukça kolaylaştırmaktadır.

Bu örneğimizde parametlerimizi bir text dokümanından alıp, otomatik olarak parametrelerimizin yani text dokümanımızdaki değerlerimizin adeti kadar word dokümanı oluşturacağız. İsterseniz text dokümanı yerine bir excel dosyasını da okuyarak bu işlemi yapabilirsiniz. Ben kolaylık olması adına text dokumanından değerleri okumayı tercih ettim. İleride excel işlemlerini de anlatacak bir örneği sizlerle paylaşacağım.

Nesne Tabanlı Programlama (Object Oriented Design) prensibi ile kodumuzu yazmamız ileride kod üzerinde değişiklikler yapmamızda bize kolaylık sağlayacak ve kodumuz oldukça mödüler olacaktır. Ben kodu 3 parçaya/sınıfa/modüle böldüm. Bunlar:

1) ReadFile Class: Text dokümanındaki değerleri okur ve bunların listesini döner.

2) WordGenerator Class: getLines (değerleriAl) ve createWord (wordDokumanıOluştur) methodlarını içerir. Öncelikle text dokumanındaki değerleri alır ve ardından bu değerleri kullanarak word dokumanlarını oluşturur.

3) Main Class: Programımızı çalıştıracağımız ana sınıfımızdır. WordGenerator sınıfının bir objesini oluşturup, bu obje ile WordGenerator sınıfının createWord methoduna erişerek word dokumanlarını oluşturmamızı sağlar.

ReadFile Sınıfının Kodu:

import java.io.BufferedReader;
import java.io.FileReader;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
public class ReadFile
{
    public List<String> readLines(String filename) throws IOException
    {
        FileReader fileReader = new FileReader(filename);
 
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        List<String> lines = new ArrayList<String>();
        String line = null;
 
        while ((line = bufferedReader.readLine()) != null)
        {
            lines.add(line);
        }
 
        bufferedReader.close();
        return lines;
    }
}

WordGenerator Sınıfının Kodu:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
 
public class WordGenerator {
 
    //Text dokumanından değerleri al
    public List<String> getLines (String fileName) throws Exception {
        //ReadFile instance
        ReadFile rf = new ReadFile();
 
        //Text dokümanını oku
        try {
            List<String> lines = rf.readLines(fileName);
            for (String line : lines) {
                System.out.println(line);
            }
            return lines;
        } catch (IOException e) {
            // Exception oluşursa bunu konsol'a yazdır.
            System.out.println("Unable to create " + fileName + ": " + e.getMessage());
            throw e;
        }
    }
 
    //Word dokümanı oluştur.
    public void createWord(List<String> lines) throws IOException {
        for (String line : lines) {
            //Documan objesini yarat.
            XWPFDocument document = new XWPFDocument();
            //Dokumanı FileSystem de yazdırmaya hazırla
            FileOutputStream out = new FileOutputStream(
                    new File("createdWord" + "_" + line + ".docx"));
 
            //Word'un içerisine yazı yaz.
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("VK Number (Parameter): " + line + " here you type your text...\n");
            document.write(out);
          
            //Dokumanı kapat
            out.close();
            System.out.println("createdWord" + "_" + line + ".docx" + " written successfully");
        }
    }
}

Main Sınıfının Kodu:

import java.util.List;
 

public class Main {

    //Ana Sınıf
    public static void main(String[] args) throws Exception {
        //WordGenerator Sınıfından bir obje oluştur
        WordGenerator wg = new WordGenerator();
 
        //VK değerlerini içeren text dokumanının ismini tanımla
        String vkFilename = "vk_no.txt";
 
        //VK değerlerini text dokumanınından elde et ve vkLines listesine at
        List<String> vkLines = wg.getLines(vkFilename);
 
        //vkLines listesindeki değerler ile word dokumanlarını oluştur.
        wg.createWord(vkLines);
    }
}

Text Dokümanı İçeriği:

11111
22222
33333
44444
55555

Konsol Çıktıları ve Sonuç:

console_output

result

onur başkırt

Onur Başkırt 10+ yıla aşkın süredir IT sektöründe çalışmalarına devam
etmektedir.Sırasıyla, Arte Bilgisayar (Önyüz Geliştiricisi), Bahçeşehir
Üniversitesi (Araştırma Görevlisi), STMicroelectronics (Çip tasarım ve
doğrulama mühendisi), Huawei (Test Grup Yöneticisi), Ericsson (Test
Lakım Lideri), ve Teknosa’da kıdemli danışman olarak analist, test takım lideri, proje yöneticisi ve şu anda yazılım operasyon müdürü olarak
görev yapmaktadır. Önceleri dijital çip tasarımı konusunda akademik
çalışmaları vardır. Güncel olarak ise yazılım (JAVA ve dinamik diller),
Test Otomasyonu, Performans Testleri gibi teknik test konuları ve Ekip
Yönetimi ve Etkin Liderlik konularında çalışma ve araştırmalarına devam
etmektedir. Kendisi hakkında detaylı bilgileri linkedin sayfasından
edinebilirsiniz.
onur başkırt

Latest posts by onur başkırt (see all)

İlgili Yazılar



Yorum yapın

*