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(); } } }
1 Yorum
DocX.dll bulamıyorum yardımcı olurmusunuz ?