C# ile Word işlemleri, Word belgem üzerinde kodla değişiklik yapmak istiyorum, belirli bir adreste bulunan Word şablon dosyam üzerinde belirlediğim alanlara kodla veri aktarmak istiyorum Nasıl Yapılır? diye soruyorsanız doğru yerdesiniz yazıyı okumaya devam edin.
Bu yazımızda C: sürücüsünde VisualProject (C:\\VisualProjects\) klasöründe bulunan Template.docx şablon dosyamızda aşağıda görüldüğü gibi “< >” tagları arasında belirlediğimiz alanlara veri aktarımı yapıp elde ettiğimiz yeni dosyayı farklı bir klasör içinde (VisualProjects klasörü içerisinde bulunan Reports klasörünün içinde) sonuc.docx isminde kaydedip dosyamızı açıp ekranda göstereceğiz.
.dll Ekleme
Yukarıda bahsettiğimiz işlemleri yapabilmek için öncelikle projemize Microsoft.Office.Interop.Word.dll dosyasını eklememiz gerekiyor. Bunun için projemizi oluşturup açtıktan sonra sağ tarafta Solution Explorer → References → Add Reference → COM → deyip Word library kütüphanesini ekliyoruz. Visual Studio’su Türkçe olanlar aşağıda görüldüğü gibi Başvurular -> Başvuru Ekle deyip devam edebilirler.

Word library kütüphanesi bilgisayarınızda yoksa internetten Microsoft.Office.Interop.Word.dll dosyasını indirip Solution Explorer → References → Add Reference → COM → deyip gözat diyerek projenize yükleyebilirsiniz.
Template Düzenleme
Bu işlemlerden sonra bizim hazırladığımız şablon Template.docx dosyamızın içeriği aşağıda görüldüğü gibidir.

“< >” işaretlerine dikkat edin bizim kodla göndereceğimiz veriler küçük-büyük “<>” taglarının bulunduğu yerlere gelecektir.
Tasarım ve Kodlama
Projenizin tasarım formunu aşağıdaki gibi oluşturduktan sonra kod kısmına geçelim.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; using System.Collections; using System.Data.SqlClient; using System.IO; using Word = Microsoft.Office.Interop.Word; |
using kısmında yukarıda görüldüğü gibi Word = Microsoft.Office.Interop.Word; satırını import ediyoruz.
clasın içine aşağıdaki kod satırlarını ekleyelim.
1 2 3 |
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); Object missing = Type.Missing; |
Butonun click olayına aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
try { Microsoft.Office.Interop.Word.Document doc = null; Object filename = "C:\\VisualProjects\\Template.docx"; doc = app.Documents.Open(filename, missing, missing); app.Selection.Find.ClearFormatting(); app.Selection.Find.Replacement.ClearFormatting(); app.Selection.Find.Execute("<adsoyad>", missing, missing, missing, missing, missing, missing, missing, missing, textBox1.Text,2); app.Selection.Find.Execute("<adres>", missing, missing, missing, missing, missing, missing, missing, missing, textBox2.Text,2); app.Selection.Find.Execute("<tlf>", missing, missing, missing, missing, missing, missing, missing, missing, textBox3.Text,2); object saveAsfile = (object)"C:\\VisualProjects\\Reports\\sonuc.docx"; doc.SaveAs2(saveAsfile, missing, missing, missing) object dosyaadi = saveAsfile; object sadeceokunur = false; object gorunur = true; object missing2 = System.Reflection.Missing.Value; app.Visible = true; doc = app.Documents.Open(ref dosyaadi, ref missing2, ref sadeceokunur, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref gorunur, ref missing2, ref missing2, ref missing2, ref missing2); doc.Activate(); System.Runtime.InteropServices.Marshal.ReleaseComObject(app); } catch { } |
Yukarıdaki kodları yazdıktan sonra projeyi çalıştırıp aşağıdaki gibi verileri girip Worde Veri Aktar butonuna basınız.

C:\\VisualProjects\Reports\sonuc.docx dosyası oluşturulup aşağıdaki ekranda görüldüğü gibi açılacaktır.

10 yorum
Hocam office 365 kullanıyorum app değişkenini tanımıyor
classın içine aşağıdaki kodu ekle
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Object missing = Type.Missing;
Selection, sadece seçili olan metinleri mi arıyor? Yeni oluşturduğum doc ta replace yapmadı maalesef.. TÜm belgeyi nasıl aratabiliriz?
Merhaba, bu işlemde metin seçme olayı yok. Uygulama içerisinde göndereceğiniz veriler word dosyası içerisinde bulunan < > (küçük-büyük) taglarının bulunduğu yerlere gelir. < > (küçük-büyük) tagları arasındaki kelimeyi doysa içerisinde arayıp bulur ve gönderdiğiniz metni oraya yazar. Burada dosyanızın bulunduğu yolu yukarıdaki örnek için “C:\\VisualProjects\\Template.docx” şeklinde doğru girdiğinizden ve yeni dosyanızın kaydedileceği yolu doğru girdiğinizden (yukarıdaki örnek için object saveAsfile = (object)”C:\\VisualProjects\\Reports\\sonuc.docx”) emin olunuz.
(Yukarıdaki örnek için C sürücüsünde VisualProjects isminde bir klasör oluşturunuz. Oluşturduğunuz şablonu bu klasörün içine atınız. VisualProjects klasörünün içinde Reports isminde bir klasör daha oluşturunuz.)
Merhaba,
Öncelikle paylaştığınız değerli bilgiler için çok teşekkür ederim.
Word içindeki bir tabloya ilgili veriyi atmak istediğimde ne yapmalıyım.
Üzerinde çalıştığım word dosyasında tarif ettiğiniz gibi yaptığım zaman istediğim yerlere istediğim veriyi gönderebildim.
Fakat word içerisinde bulunan bir tabloya veri göndermek istediğimde gönderemedim.
Nasıl yapabilirim yardımcı olabilir misiniz
Verilen örnekte zaten word dosyasındaki bir tabloya veri aktarımı yapılmış. Önemli olan aktarılacak yerdeki (bu bir tablo hücresi de olabilir) <> tagları arasına verilen isim ile kod kısmındaki ismin aynı olması.
merhaba ben dosyanın çalışacağı debug yolun oraya klasör oluşturdum. verdiğiniz kodları yazdım .program çalışıyor ama dosya oluşturmuyor ve ekleme yapmıyor. mail adresiniz nedir yardımcı olabilir misiniz? hakan_431@hotmail.com
Merhaba, aynı sorunu bende yaşadım. Bende dosya yoluna direk dosya adını yazınca belgelerime kaydetti. Şuan için bir çözüm bulamadım.(Dosya yolunu uzun şekliyle yazmak gerekiyor)
try {
Microsoft.Office.Interop.Word.Document doc = null;
Object filename = AppDomain.CurrentDomain.BaseDirectory + ” @deneme\\deneme.docx”;
doc = app.Documents.Open(filename, missing, missing);
app.Selection.Find.ClearFormatting();
app.Selection.Find.Replacement.ClearFormatting();
app.Selection.Find.Execute(“<date>”,missing, label1.Text, 2);
object saveAsfile = (object)AppDomain.CurrentDomain.BaseDirectory + ” @deneme\\sn\\deneme.docx”;
doc.SaveAs2(saveAsfile, missing);
object dosyaadi = saveAsfile;
object sadeceokunur = false;
object gorunur = true;
object missing2 = System.Reflection.Missing.Value;
app.Visible = true;
doc = app.Documents.Open(ref dosyaadi, ref missing2, ref sadeceokunur, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref missing2, ref gorunur, ref missing2, ref missing2, ref missing2, ref missing2);
doc.Activate();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
}
catch
{
}
bu arada dll yükleme hatası veriyor. netten bulduğum dll ile değiştirdim aam yine hata veriyor.. warning olarak. ama program çalışıyor. worde ekleme yapmıyor.