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 ?