ASP.net ile Word Şablona Veri Göndermek

Asp.net ile word şablona veri göndermek aslında çok basit. Yapacağımız işlem word belgesini okumak ve üzerinde değişiklik yapmakla alakalı. Word belgesine veri göndereceğimiz yerleri değişken olarak belirliyoruz.
 
Örnek :
Word şablonumuz bir başvuru formu olsun ve içinde şu bilgiler olsun :
ADI SOYADI / NAME : @adi@
UNVAN / TITLE : @unvan@
ÜNİVERSİTE / UNIVERSITY : @universite@
BÖLÜM / DEPARTMENT : @bolum@
ADRES / ADDRESS : @adres@
ŞEHİR / CITY : @sehir@
ÜLKE / COUNTRY : @ulke@
TELEFON / PHONE : @telefon@
E-POSTA/ E-MAIL : @eposta@
 
@değişken@ olan yerler bizim değişkenlerimiz, bu değişkenleri kod kısmından göndereceğiz. @ yerine istediğinizi yazabilirsiniz. Ben ayırt edici olsun diye bu şekilde tanımladım.

Asp.net metodunumuz şu şekilde :
 

private void WordCiktiAl()
        {
            var bilgiler = new BASVURULAR().Show(icerikID); // Veritabanından başvuru bilgisi seçiyoruz. Veri çekmenin bir sürü farklı yöntemi var. İstediğinizi kullanabilirsiniz.
            if (bilgiler != null)
            {
                StringWriter writer = new StringWriter();
                HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
                string doc1 = Server.MapPath("~/Upload/form.docx"); //Şablonumuzun olduğu dosya yolu
                string doc2 = Server.MapPath("~/Upload/temp.docx"); //Bu da temp dosyası, sürekli değişip silinecek olan dosya
                File.Delete(doc2);//Öncelikle devamlı değişen dosyayı siliyoruz.
                File.Copy(doc1, doc2);//daha sonra istediğimiz taslağın içerğini bu dosyaya kopyalıyoruz.
                using (DocX doc = DocX.Load(doc2))
                {
                    //Değişkenleri gerçek bilgiler ile replace ediyoruz
                    doc.ReplaceText("@sergi@", bilgiler.Soyadi, false);
                    doc.ReplaceText("@adi@", bilgiler.Adi, false);
                    doc.ReplaceText("@unvan@", bilgiler.Unvan, false);
                    doc.ReplaceText("@universite@", bilgiler.Universite, false);
                    doc.ReplaceText("@bolum@", bilgiler.Bolum, false);
                    doc.ReplaceText("@adres@", bilgiler.Adres, false);
                    doc.ReplaceText("@sehir@", bilgiler.Sehir, false);
                    doc.ReplaceText("@ulke@", bilgiler.Ulke, false);
                    doc.ReplaceText("@telefon@", bilgiler.Telefon, false);
                    doc.ReplaceText("@eposta@", bilgiler.Eposta, false);
                    string ad = Sabitler.SeoYap(bilgiler.Adi)+".docx"; // yeni oluşturulacak dosyanın adı
                    doc.SaveAs(doc2);
                    WebClient req = new WebClient();
                    HttpResponse response = HttpContext.Current.Response;
                    string filePath = "~/Upload/temp.docx";
                    response.Clear();
                    response.ClearContent();
                    response.ClearHeaders();
                    response.Buffer = true;
                    Response.AppendHeader("content-disposition", "attachment; filename=" + ad);
                    byte[] data = req.DownloadData(Server.MapPath(filePath));
                    response.BinaryWrite(data);
                    response.End();
                }
            }
        }

You may also like

1 Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.