Aracılığıyla paylaş


İzlenecek yol: C'de Office Programlama#

C# Microsoft Office programlamayı geliştiren özellikler sunar. Yararlı C# özellikleri arasında adlandırılmış ve isteğe bağlı bağımsız değişkenler ile türünde dynamicdönüş değerleri bulunur. COM programlamada anahtar sözcüğünü ref atlayabilir ve dizine alınan özelliklere erişim elde edebilirsiniz.

Her iki dil de, kullanıcının bilgisayarına birincil birlikte çalışma derlemeleri (PIA) dağıtmadan COM bileşenleriyle etkileşim kuran derlemelerin dağıtılmasına olanak tanıyan tür bilgilerinin katıştırılmasını sağlar. Daha fazla bilgi için bkz . İzlenecek Yol: Yönetilen Derlemelerden Türleri Ekleme.

Bu izlenecek yol, bu özellikleri Office programlama bağlamında gösterir, ancak bu özelliklerin çoğu genel programlamada da yararlıdır. İzlenecek yolda, excel çalışma kitabı oluşturmak için Excel Eklentisi uygulamasını kullanırsınız. Ardından, çalışma kitabının bağlantısını içeren bir Word belgesi oluşturursunuz. Son olarak, PIA bağımlılığını etkinleştirmeyi ve devre dışı bırakmayı görürsünüz.

Önemli

VSTO (Office için Visual Studio Araçları) .NET Framework'e dayanır. COM eklentileri .NET Framework ile de yazılabilir. Office Eklentileri.NET'in en son sürümleri olan .NET Core ve .NET 5+ ile oluşturulamaz. Bunun nedeni .NET Core/.NET 5+'ın aynı işlemde .NET Framework ile birlikte çalışamaması ve eklenti yükleme hatalarına yol açabileceğidir. Office için VSTO ve COM eklentileri yazmak için .NET Framework'ü kullanmaya devam edebilirsiniz. Microsoft, .NET Core veya .NET 5+ kullanmak için VSTO veya COM eklenti platformunu güncelleştirmeyecektir. Office Web Eklentileri'nin sunucu tarafını oluşturmak için .NET Core ve .NET 5+ ASP.NET Core'un avantajlarından yararlanabilirsiniz.

Ön koşullar

Bu kılavuzu tamamlamak için bilgisayarınızda Microsoft Office Excel ve Microsoft Office Word yüklü olmalıdır.

Dekont

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz. IDE’yi kişiselleştirme.

Excel Eklenti uygulaması ayarlama

  1. Visual Studio’yu çalıştırın.
  2. Dosya menüsünde Yeni'nin üzerine gelin ve Proje'yi seçin.
  3. Yüklü Şablonlar bölmesinde C# öğesini genişletin, Office'i genişletin ve ardından Office ürününün sürüm yılını seçin.
  4. Şablonlar bölmesinde Excel <sürümü> Eklentisi'ni seçin.
  5. .NET Framework 4 veya sonraki bir sürümün Hedef Çerçeve kutusunda göründüğünden emin olmak için Şablonlar bölmesinin en üstüne bakın.
  6. İstersen, Ad kutusuna projeniz için bir ad yazın.
  7. Tamam'ı seçin.
  8. Yeni proje Çözüm Gezgini görüntülenir.

Başvuru ekleme

  1. Çözüm Gezgini'da projenizin adına sağ tıklayın ve ardından Başvuru Ekle'yi seçin. Başvuru Ekle iletişim kutusu görüntülenir.
  2. Derlemeler sekmesinde, Bileşen Adı listesinde Microsoft.Office.Interop.Excel, sürüm <version>.0.0.0 (Office ürün sürüm numaralarının anahtarı için bkz. Microsoft Sürümleri) öğesini seçin ve ardından CTRL tuşunu basılı tutarak Microsoft.Office.Interop.Word, version <version>.0.0.0öğesini seçin. Derlemeleri görmüyorsanız, bunları yüklemeniz gerekebilir (bkz . Nasıl yapılır: Office Birincil Birlikte Çalışma Derlemelerini Yükleme).
  3. Tamam'ı seçin.

Gerekli imports deyimlerini ekleme veya yönergeleri kullanma

Çözüm Gezgini ThisAddIn.cs dosyasına sağ tıklayıp Kodu Görüntüle'yi seçin. Henüz yoksa kod dosyasının en üstüne aşağıdaki using yönergeleri (C#) ekleyin.

using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;

Banka hesaplarının listesini oluşturma

Çözüm Gezgini projenizin adına sağ tıklayın, Ekle'yi ve ardından Sınıf'ı seçin. Sınıfa Account.cs adını verin. Ekle'yi seçin. sınıfının tanımını Account aşağıdaki kodla değiştirin. Sınıf tanımları otomatik olarak uygulanan özellikleri kullanır.

class Account
{
    public int ID { get; set; }
    public double Balance { get; set; }
}

İki hesap içeren bir bankAccounts liste oluşturmak için ThisAddIn.cs dosyasında yöntemine ThisAddIn_Startup aşağıdaki kodu ekleyin. Liste bildirimleri koleksiyon başlatıcılarını kullanır.

var bankAccounts = new List<Account>
{
    new Account
    {
        ID = 345,
        Balance = 541.27
    },
    new Account
    {
        ID = 123,
        Balance = -127.44
    }
};

Verileri Excel'e aktarma

Aynı dosyada aşağıdaki yöntemi sınıfına ThisAddIn ekleyin. yöntemi bir Excel çalışma kitabı ayarlar ve verileri bu çalışma kitabına aktarır.

void DisplayInExcel(IEnumerable<Account> accounts,
           Action<Account, Excel.Range> DisplayFunc)
{
    var excelApp = this.Application;
    // Add a new Excel workbook.
    excelApp.Workbooks.Add();
    excelApp.Visible = true;
    excelApp.Range["A1"].Value = "ID";
    excelApp.Range["B1"].Value = "Balance";
    excelApp.Range["A2"].Select();

    foreach (var ac in accounts)
    {
        DisplayFunc(ac, excelApp.ActiveCell);
        excelApp.ActiveCell.Offset[1, 0].Select();
    }
    // Copy the results to the Clipboard.
    excelApp.Range["A1:B3"].Copy();
}
  • Add yöntemi, belirli bir şablonu belirtmek için isteğe bağlı bir parametreye sahiptir. İsteğe bağlı parametreler, parametrenin varsayılan değerini kullanmak istiyorsanız bu parametrenin bağımsız değişkenini atlamanızı sağlar. Önceki örnekte bağımsız değişken olmadığından, Add varsayılan şablonu kullanır ve yeni bir çalışma kitabı oluşturur. C# öğesinin önceki sürümlerindeki eşdeğer deyim için yer tutucu bağımsız değişkeni gerekir: excelApp.Workbooks.Add(Type.Missing). Daha fazla bilgi için bkz . Adlandırılmış ve İsteğe Bağlı Bağımsız Değişkenler.
  • Range nesnesinin ve Offset özellikleri dizinli özellikler özelliğini kullanır.Range Bu özellik, aşağıdaki tipik C# söz dizimini kullanarak COM türlerinden bu özellikleri kullanmanıza olanak tanır. Dizine alınan özellikler de nesnesinin ValueRange özelliğini kullanmanıza olanak tanıyarak özelliğini kullanma gereksinimini Value2 ortadan kaldırır. Value özelliği dizine eklenir, ancak dizin isteğe bağlıdır. İsteğe bağlı bağımsız değişkenler ve dizine alınan özellikler aşağıdaki örnekte birlikte çalışır.
// Visual C# 2010 provides indexed properties for COM programming.
excelApp.Range["A1"].Value = "ID";
excelApp.ActiveCell.Offset[1, 0].Select();

Kendi dizine alınan özelliklerini oluşturamazsınız. Özellik yalnızca mevcut dizine alınan özelliklerin tüketimini destekler.

Sütun genişliklerini içeriğe uyacak şekilde ayarlamak için sonuna DisplayInExcel aşağıdaki kodu ekleyin.

excelApp.Columns[1].AutoFit();
excelApp.Columns[2].AutoFit();

Bu eklemeler C# dilinde başka bir özelliği gösterir: Office gibi COM konaklarından döndürülen değerleri tür dinamikleri gibi işlemeObject. Embed InteropTypes derleyici seçeneğiyle derlemeye başvurarak, Birlikte Çalışma Türlerini Ekle varsayılan değerine Truesahip olduğunda veya eşdeğer olarak COM nesneleri otomatik olarak değerlendirilirdynamic. Birlikte çalışma türlerini ekleme hakkında daha fazla bilgi için, bu makalenin devamında yer alan "PIA başvuruyu bulmak için" ve "PIA bağımlılığını geri yüklemek için" yordamlarına bakın. hakkında dynamicdaha fazla bilgi için bkz. dinamik veya Tür dinamik kullanma.

DisplayInExcel'i çağırma

Yönteminin sonuna ThisAddIn_StartUp aşağıdaki kodu ekleyin. çağrısı DisplayInExcel iki bağımsız değişken içerir. İlk bağımsız değişken, işlenen hesap listesinin adıdır. İkinci bağımsız değişken, verilerin nasıl işlendiğine ilişkin çok satırlı bir lambda ifadesidir. Her hesabın ID ve balance değerleri bitişik hücrelerde ve bakiye sıfırdan küçükse satır kırmızı olarak görüntülenir. Daha fazla bilgi için bkz . Lambda İfadeleri.

DisplayInExcel(bankAccounts, (account, cell) =>
// This multiline lambda expression sets custom processing rules
// for the bankAccounts.
{
    cell.Value = account.ID;
    cell.Offset[0, 1].Value = account.Balance;
    if (account.Balance < 0)
    {
        cell.Interior.Color = 255;
        cell.Offset[0, 1].Interior.Color = 255;
    }
});

Programı çalıştırmak için F5 tuşuna basın. Hesaplardan verileri içeren bir Excel çalışma sayfası görüntülenir.

Word belgesi ekleme

Excel çalışma kitabına bağlantı içeren bir Word belgesi oluşturmak için yönteminin sonuna ThisAddIn_StartUp aşağıdaki kodu ekleyin.

var wordApp = new Word.Application();
wordApp.Visible = true;
wordApp.Documents.Add();
wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);

Bu kod, C# dilindeki özelliklerin birkaçını gösterir: COM programlamasında anahtar sözcüğün atlanması ref , adlandırılmış bağımsız değişkenler ve isteğe bağlı bağımsız değişkenler. PasteSpecial yönteminin yedi parametresi vardır ve bunların tümü isteğe bağlı başvuru parametreleridir. Adlandırılmış ve isteğe bağlı bağımsız değişkenler, erişmek istediğiniz parametreleri ada göre belirlemenizi ve bağımsız değişkenleri yalnızca bu parametrelere göndermenizi sağlar. Bu örnekte, bağımsız değişkenler Pano'da çalışma kitabına bağlantı oluşturmayı (parametre Link) gösterir ve bu bağlantıyı Word belgesinde bir simge (parametre DisplayAsIcon) olarak görüntüler. C# ayrıca bu bağımsız değişkenler için anahtar sözcüğü atlamanıza ref da olanak tanır.

Uygulamayı çalıştırma

Uygulamayı çalıştırmak için F5'e basın. Excel başlatılır ve içindeki bankAccountsiki hesaptaki bilgileri içeren bir tablo görüntülenir. Ardından, Excel tablosunun bağlantısını içeren bir Word belgesi görüntülenir.

Tamamlanan projeyi temizleme

Visual Studio'da, Oluştur menüsünde Çözümü Temizle'yi seçin. Aksi takdirde, bilgisayarınızda Excel'i her açtığınızda eklenti çalışır.

PIA başvuruyu bulma

  1. Uygulamayı yeniden çalıştırın, ancak Çözümü Temizle'yi seçmeyin.
  2. Başlangıç'ı seçin. Microsoft Visual Studio <sürümünü> bulun ve bir geliştirici komut istemi açın.
  3. Visual Studio için Geliştirici Komut İstemi penceresine yazın ildasm ve ENTER tuşuna basın. IL DASM penceresi görüntülenir.
  4. IL DASM penceresindeki Dosya menüsünde Dosya>Aç'ı seçin. Visual Studio <sürümü'ne> çift tıklayın ve ardından Projeler'e çift tıklayın. Projenizin klasörünü açın ve projenizin adı.dll dosyasının bin/Debug klasörüne bakın. Projenizin adı.dll dosyasına çift tıklayın. Projenizin özniteliklerinin yanı sıra diğer modüllere ve derlemelere başvurular da yeni bir pencere görüntülenir. Derleme ad alanlarını ve Microsoft.Office.Interop.WordiçerirMicrosoft.Office.Interop.Excel. Visual Studio'da varsayılan olarak, derleyici başvurulan bir PIA'dan ihtiyacınız olan türleri derlemenize aktarır. Daha fazla bilgi için bkz . Nasıl yapılır: Derleme İçeriğini Görüntüleme.
  5. MANIFEST simgesine çift tıklayın. Proje tarafından başvuruda bulunılan öğeleri içeren derlemelerin listesini içeren bir pencere görüntülenir. Microsoft.Office.Interop.Excel ve Microsoft.Office.Interop.Word listede yok. Projenizin ihtiyaç duyduğu türleri derlemenize aktardığınızdan, PIA başvurularını yüklemeniz gerekmez. Türleri derlemenize içeri aktarmak dağıtımı kolaylaştırır. PIA'ların kullanıcının bilgisayarında mevcut olması gerekmez. Bir uygulama, PIA'nın belirli bir sürümünün dağıtımını gerektirmez. Gerekli API'lerin tüm sürümlerde mevcut olması koşuluyla, uygulamalar Office'in birden çok sürümüyle çalışabilir. PIA'ların dağıtımı artık gerekli olmadığından, önceki sürümler de dahil olmak üzere Office'in birden çok sürümüyle çalışan gelişmiş senaryolarda bir uygulama oluşturabilirsiniz. Kodunuz, çalıştığınız Office sürümünde bulunmayan API'leri kullanamaz. Belirli bir API'nin önceki bir sürümde kullanılabilir olup olmadığı her zaman açık değildir. Office'in önceki sürümleriyle çalışmak önerilmez.
  6. Bildirim penceresini ve derleme penceresini kapatın.

PIA bağımlılığını geri yükleme

  1. Çözüm Gezgini'da Tüm Dosyaları Göster düğmesini seçin. Başvurular klasörünü genişletin ve Microsoft.Office.Interop.Excel'i seçin. Özellikler penceresini görüntülemek için F4 tuşuna basın.
  2. Özellikler penceresinde, Birlikte Çalışma Türlerini Ekle özelliğini True yerine False olarak değiştirin.
  3. için bu yordamda Microsoft.Office.Interop.Word1. ve 2. adımları yineleyin.
  4. C# dilinde, yönteminin sonundaki iki çağrıya Autofit açıklama ekleyin DisplayInExcel .
  5. Projenin hala düzgün çalıştığını doğrulamak için F5 tuşuna basın.
  6. Derleme penceresini açmak için önceki yordamdaki 1-3 arası adımları yineleyin. ve Microsoft.Office.Interop.Excel öğesinin Microsoft.Office.Interop.Word artık eklenmiş derlemeler listesinde olmadığına dikkat edin.
  7. MANIFEST simgesine çift tıklayın ve başvuruda bulunan derlemeler listesinde ilerleyin. Hem hem de Microsoft.Office.Interop.WordMicrosoft.Office.Interop.Excel listededir. Uygulama Excel ve Word PIA'larına başvuracağından ve Birlikte Çalışma Türlerini Ekle özelliği False olduğundan, her iki derleme de son kullanıcının bilgisayarında bulunmalıdır.
  8. Visual Studio'da, tamamlanan projeyi temizlemek için Derleme menüsünde ÇözümüTemizle'yi seçin.

Ayrıca bkz.