c# – Bookmarks Word işlemleri

5 Ağu

Herkese merhaba,
Daha önce bu yazımda sizlere sıfırdan nasıl word dosyası oluştururuz anlatmıştım.
Bugün ise var olan bir word dosyasını açıp, yer işaretlerine veri göndererek şablon kullanımını anlatacağım.

Öncelikle bilmeyen arkadaşlar için şablonu ve bookmarks eklemeyi gösteriyim. Şöyle bir şablonumuz olsun.

templateWord

Şablon içinde ki her alan için bookmarks ekleyim.

Şablonumuzun içini koddan dolduracağız. O yüzden hangi alana hangi veri geleceğini belirtmek için “Bookmarks” lara ihtiyaç duyuyoruz.

Şablon içindeki Adı : Alanından sonra yazmak istediğimiz yere tıklayıp Ekle > Bağlantılar > Yer işareti. Yolunu izleyerek bookmarks ekliyoruz.

addBookMarks

Aynı şekilde soyadi, email ve açıklama alanlarınıda bookmarks(yer işareti) ekleyin. (Bookmark isimlerinizde Türkçe karakter kullanmamanızı öneririm)

NOT : Bookmarksı eklerken imleciniz neredeyse orayı işaret ediyorsunuz anlamına gelir.

Şimdi kodlarımıza geçelim. Referanslardan Microsoft.Office.Interop.Word‘ü eklemeyi unutmayalım. Detaylar için c# – Word dosyası oluşturmak adlı yazıma göz atabilirsiniz.

Eğer referanslar listelesinde bu kütüphaneyi bulamazsanız, nuget manager aracılığıyla aratıp yükleyebilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Office.Interop.Word;

namespace OpenWordAndBookMarksProcess
{
    class OpenWordAndBookmarksProcess
    {
        public void openWord(string _path)
        {
            if (!File.Exists(_path))
            {
                System.Windows.Forms.MessageBox.Show("Dosya bulunamadı.");
            }
            else
            {
                //Word uygulaması oluşturuyoruz.
                Application wordApp = new Application();
                
                object missing = System.Reflection.Missing.Value;
                object readOnly = false;
                object fileName = _path;

                //+Word dosyamızı açıyoruz.
                Document doc = wordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref readOnly,
                ref missing, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing);
                
                //Aktif sayfayı açıyoruz.
                doc.Activate();

                //word dosyası ekrana çıkartılır
                wordApp.Visible = true;
                //-

                //+Bookmarks işlemleri
                //Word dosyamızda ki bookmark adını yazıyoruz.
                object bookMarksName = "adi";
                //ilgili bookmarkı buluyor ve yerine yazmak istediğimiz veriyi yazıyoruz.
                doc.Bookmarks.get_Item(ref bookMarksName).Range.Text = "Semih";

                object bookMarksSoyadi = "soyadi";
                doc.Bookmarks.get_Item(ref bookMarksSoyadi).Range.Text = "Çelikol";

                object bookMarksEmail = "email";
                doc.Bookmarks.get_Item(ref bookMarksEmail).Range.Text = "semihcelikol@outlook.com";

                object bookMarksAciklama = "aciklama";
                doc.Bookmarks.get_Item(ref bookMarksAciklama).Range.Text = "Bu bir test uygulamasıdır. \n semihcelikol.com";
                //-

                ////Kaydedilir ve otomatik olarak çıkılır.
                ////Dosya kaydedilir.
                //doc.SaveAs2(ref fileName);
                ////Dosya kapatılır.
                //doc.Close(ref missing, ref missing, ref missing);
                //doc = null;
                ////Word uygulaması kapatılır
                //wordApp.Quit(ref missing, ref missing, ref missing);
                //wordApp = null;
            }
        }
    }
}

Başka bir yazımda görüşmek üzere, teşekkürler.

Şunlarda ilginiz çekebilir.
c# – Notepad veri yazmak
c# – Notepad veri okumak

4 Replies to “c# – Bookmarks Word işlemleri

  1. merhaba hocam bunu c# form uygulamasında yapmak istiyorum. word belgesinde istediğim bir yere veri eklemesini yapacağım var mı bir örnek?

  2. hocam denedim. bendekı sorun dll yüklemıyor. amacım word içinde yerine seçilen tarihi ekleyecek. bu konuda fikriniz varmı?
    Severity Code Description Project File Line Suppression State
    Warning Could not determine the dependencies of the COM reference “Microsoft.Office.Interop.Word”. Tür kitaplığı/DLL yükleme hatası. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)) WindowsFormsApplication6

    kodları—————-
    string fileName = “C:\\a.docx”;
    string strBul = “#ad#”;
    string strDegistir = “Ali”;
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

    //var word = new Microsoft.Office.Interop.Word.Application();
    word.Documents.Open(fileName);
    word.Visible = true;
    var content = word.ActiveDocument.Content;
    content.Find.Execute(strBul, null, null, null, null,
    null, null, null, null,
    strDegistir,
    Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll);
    word.ActiveDocument.Save();
    word.ActiveDocument.Close();
    word.Quit();

Bir Cevap Yazın