Asp.Net İle Template kullanarak Word (.doc) Belgesi Oluşturma,yada Var Olan Belgede Değişiklik Yapma

ASP.Net ile Word belgesi oluşturmak biraz zahmetli iş. Eğer belgenin görünüşü çok önemli değil veya basit bir tasarıma sahipse filestream ile normal bir belge yazar gibi html kodlarıyla bir word belgesi hazırlanabilir.
Ama yazmak istediğiniz belge karmaşık bir yapıya sahipse örneğin sayfanın kenar boşlukları bile önemliyse o zaman word belgesi oluşturmayı destekleyecek classlar bulmak gerekir. (interop yada openxml gibi...).
Benim kullandığım DocX te bu sınıflardan biri.Aşağıda, hazır olan bir belgeyi alıp devamlı değişken olan yerleri belli formatta düzenleyip buraları istenen bilgilerle Replace etmeye bakıcam.
Öncelikle projemize eklemek için DocX in .dll ini indirmemiz gerekiyor. (Burada ki linkten ulaşabiliriz.)
Daha sonra indirdiğimiz .dll dosyasını Add Referance  --> Browse diyip  DocX.dll  dosyasını  indirdiğiniz yerden projemize ekliyoruz.

Aşağıdaki sınıfların eklendiğine emin olmamız gerekiyor.
using System.IO;
using Novacode;

Bu Kısımda Dosyaların Yollarını Belirtiyoruz. Bunu taslağı değiştirmek istediğimizde kullanabiliriz(Eğer birinci seçiliyse ilk taslak ikinci seçiliyse 2.taslak gibi).
protected void dosyalar()
{

    string doc1 = Server.MapPath("~/templates/taslak1.docx");

    string doc2 = Server.MapPath("~/templates/temp.docx");


    Icerik_Islem(doc1, doc2);

}

Hangi dosyaların kullanıdığını ayarladıktan sonra icerde kullandığımız Icerik_Islem() fonksiyonunu aşağıda yazılıdır.
public static void Icerik_Islem(string document, string outdoc)
{

    File.Delete(outdoc);//Öncelikle devamlı değişen dosyayı siliyoruz.

    File.Copy(document, outdoc);//daha sonra istediğimiz taslağın içerğini bu dosyaya kopyalıyoruz.

    using (DocX doc = DocX.Load(outdoc))
    {
        
        doc.ReplaceText("<>tckimlik<>", "11111111111", false);

        doc.ReplaceText("<>soyad<>", "Demir", false);

        doc.SaveAs(outdoc);

    }

}
Yukarıdaki Örnekte "<>tckimlik<>" yazan yeri "<>11111111111<>" ile değiştirir.Aynı Şekilde "<>soyad<>" yazan yeride  "Demir" ile değiştirecektir.Taslağı oluştururken bu kuralları göz önünde bulundurmalıyız. Yani değişkenleri belirlemek için kendi formatımızı yaratmalıyız. Bu şekilde dosyada istediğimiz değişiklikleri yapmış oluruz.
Bu kodlar, veritabanından çekilen bilgilerle belli bir formatta word belgesi oluşturmada yardımcı olacaktır.
Şimdi tek yapmamız gereken dosyalar fonksiyonunu biyede çağırmak.

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Mernisten veri Çekme