protected void btnRapor_Click(object sender, EventArgs e) { // Şablon dosyasının yeri string zipDosya = Server.MapPath("Sablon/Sablon1.docx"); // geçici klasör string geciciKlasor = string.Format(Server.MapPath("Sablon/{0}"), Guid.NewGuid().ToString("N")); // şablonu geçici klasöre aç using (ZipFile zip = ZipFile.Read(zipDosya)) { zip.ExtractAll(geciciKlasor); } // içerik word/document.xml altında string documentDosya = geciciKlasor + @"\word\document.xml"; // tüm içeriği oku string icerik = File.ReadAllText(documentDosya); // anahtar alanları güncelle icerik = icerik.Replace("{ADSOYAD}", txtAdSoyad.Text); icerik = icerik.Replace("{TARIH}", txtTarih.Text); icerik = icerik.Replace("{BORC}", txtBorc.Text); // document.xml i kaydet StreamWriter writer = new StreamWriter(documentDosya, false); writer.Write(icerik); writer.Close();
// geçici klasörü ziple ve kullanıcıya Rapor.docx adıyla indir using (ZipFile zip = new ZipFile()) { string zipAdi = "Rapor.docx"; Response.Clear(); Response.BufferOutput = false; // uzun dosyalar için Response.ContentType = "application/zip"; Response.AddHeader("content-disposition", "filename=" + zipAdi);
zip.AddDirectory(geciciKlasor);
zip.Save(Response.OutputStream); } // işi bitince geçici klasörü sil Directory.Delete(geciciKlasor, true); Response.Close(); }