Aracılığıyla paylaş


İzlenecek yol: Office Programlama (C# ve Visual Basic)

Visual Studio 2010C# ve Visual Basic, Microsoft Office programlama artıran yeni özellikler sunar.Her dil, başka bir dil zaten varolan özellikleri eklendi.

C# [NULL]'deki yeni özelliklerin adlandırılmış ve isteğe bağlı bağımsız değişkenler dahil, dönüş türüne sahip değer dynamicve programlama yeteneği atlamak için com ref anahtar sözcüğünü ve Dizinlenmiş özelliklere erişmek için.Yeni özelliklerini Visual Basic deyimi lambda ifadeleri ve koleksiyon başlatıcıları otomatik gerçeklenen özellikler içerir.

Her iki dilde olanak sağlayan birincil birlikte çalışma derlemeleri (PIA) kullanıcının bilgisayara dağıtma olmadan com bileşenlerle etkileşimli derlemeleri dağıtım türü bilgilerini katıştırma etkinleştirin.Daha fazla bilgi için bkz. İzlenecek yol: Yönetilen derlemeler (C# ve Visual Basic) türlerinden gömme.

Bu anlatım yeni özellikleri Office programlama bağlamında gösterir, ancak bunların çoğu, aynı zamanda genel programlama kullanışlıdır.İzlenecek yolda, bir Excel çalışma kitabı oluşturmak için Excel eklenti uygulama ilk kez kullanır.Çalışma kitabına bağlantı içeren bir Word belgesi oluşturur.Son olarak, açma ve kapatma PIA bağımlılık nasıl kapatılabilir göreceksiniz.

Önkoşullar

Bu izlenecek yolu tamamlamak için 2010 veya 2007 Microsoft Office Excel ve Microsoft Office Word 2010 veya 2007 yüklü olmalıdır.

Daha eski bir işletim sistemi kullanıyorsanız, Windows Vista, emin olun .NET Framework 2.0 yüklenir.

[!NOT]

Bilgisayarınızda, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazılarının adı veya konumu farklı gösterilebilir. Bu öğeleri bilgisayarınızdaki Visual Studio sürümü ve kullandığınız ayarlar belirler. Daha fazla bilgi için bkz: Visual Studio ayarları.

Excel eklenti uygulama ayarlamak için

  1. Visual Studio'yu başlatın.

  2. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklatın.

  3. İçinde Yüklü Şablonlar bölmesinde genişletin Visual Basic veya Visual C#, genişletin Office[NULL]'ı 2010 (veya 2007 Office 2007 kullanıyorsanız).

  4. İçinde şablonları bölmesinde tıklatın Excel 2010 Add-in (veya Excel 2007 Eklentisi).

  5. .NET Framework 4'ın Hedef Framework kutusunda göründüğünden emin olmak için Şablonlar bölmesinin en üstüne bakın.

  6. Projenizde için bir ad yazın adı kutusuna, istiyorsanız.

  7. Tamam düğmesini tıklatın.

  8. Çözüm Gezgini'nde yeni proje görüntülenir.

Başvuruları eklemek için

  1. İçinde Çözüm Gezgini, projenizin adını sağ tıklatın ve sonra Add Reference.Başvuru Ekle iletişim kutusu görüntülenir.

  2. Üzerinde .net sekmesini seçin Microsoft.Office.Interop.Excel, sürüm 14.0.0.0 (veya 12.0.0.0 sürümü Excel 2007), Bileşen adı listelemek ve anahtar ve seçme ctrl tuşunu basılı tutun Microsoft.Office.Interop.Word, 14.0.0.0 sürümünü (veya Word 2007'in 12.0.0.0 sürümü).

  3. Tamam düğmesini tıklatın.

Gerekli Imports ifadelerini eklemek veya yönergeleri kullanma

  1. İçinde Çözüm Gezgini, sağ ThisAddIn.vb veya ThisAddIn.cs dosyasını tıklatıp, sonra Görünüm kodu.

  2. Aşağıdaki Imports ifadeleri (Visual Basic'te) veya using (C#) yönergelerini bunlar zaten yoksa, kod dosyasının en üstüne.

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

Banka hesaplarının bir listesini oluşturmak için

  1. İçinde Çözüm Gezgini, projenizin adını sağ tıklayın, Ekle[NULL]'ı sınıfı.C# kullanıyorsanız, Account.cs ya da Visual Basic kullanıyorsanız, Account.vb sınıfı adı.Ekle‘yi tıklatın.

  2. Tanımını değiştirmek Account sınıfı ile aşağıdaki kodu.Sınıf tanımları kullanan Otomatik gerçeklenen özellikler, Visual Basic, Visual Studio 2010'daki yeni.Daha fazla bilgi için bkz. Otomatik uygulanan özellikler (Visual Basic).

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
    class Account
    {
        public int ID { get; set; }
        public double Balance { get; set; }
    }
    
  3. Oluşturmak için bir bankAccounts iki hesabı içeren bir liste eklemek için aşağıdaki kodu ThisAddIn_Startup yönteminde ThisAddIn.vb veya ThisAddIn.cs.Liste bildirimlerin kullanmak Koleksiyon başlatıcıları, Visual Basic, Visual Studio 2010'daki yeni.Daha fazla bilgi için bkz. Koleksiyon Başlatıcı (Visual Basic).

    Dim bankAccounts As New List(Of Account) From {
        New Account With {
                              .ID = 345,
                              .Balance = 541.27
                         },
        New Account With {
                              .ID = 123,
                              .Balance = -127.44
                         }
        }
    
    var bankAccounts = new List<Account> 
    {
        new Account 
        {
            ID = 345,
            Balance = 541.27
        },
        new Account 
        {
            ID = 123,
            Balance = -127.44
        }
    };
    

Verileri Excel'e vermek için

  1. Aynı dosyada aşağıdaki yöntemi ekleyin ThisAddIn sınıf.Yöntem bir Excel çalışma kitabı oluşturun ayarlar ve veriler için dışa aktarır.

    Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account),
                   ByVal DisplayAction As Action(Of Account, Excel.Range))
    
        With Me.Application
            ' Add a new Excel workbook.
            .Workbooks.Add()
            .Visible = True
            .Range("A1").Value = "ID"
            .Range("B1").Value = "Balance"
            .Range("A2").Select()
    
            For Each ac In accounts
                DisplayAction(ac, .ActiveCell)
                .ActiveCell.Offset(1, 0).Select()
            Next
    
            ' Copy the results to the Clipboard.
            .Range("A1:B3").Copy()
        End With
    End Sub
    
    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();
    }
    

    Bu yöntemde iki yeni C# özellikleri kullanılır.Bu özelliklerden ikisi de Visual Basic içinde zaten var.

    • Yöntem Ekle olan bir isteğe bağlı parametre belirli bir şablon belirtme.İsteğe bağlı parametreler, yeni Visual C# 2010, parametrenin varsayılan değerini kullanmak istiyorsanız, bu parametre için bağımsız değişkenini atlarsanız olanak sağlar.Önceki örnekte, hiçbir bağımsız değişken gönderildiği için Add yeni bir çalışma kitabı oluşturur ve varsayılan şablon kullanır.C# [NULL]'ın önceki sürümlerinde eşdeğer deyiminde yer tutucu bağımsız değişken gerektirir: excelApp.Workbooks.Add(Type.Missing).

      Daha fazla bilgi için bkz. Adlandırılmış ve isteğe bağlı bağımsız değişkeni (C# Programlama Kılavuzu).

    • Range Ve Offset özelliklerini aralık nesne kullanımı Özellikler dizine özelliği.Bu özellik aşağıdaki tipik C# sözdizimi kullanarak com türlerini bu özelliklerinden kullanmasını sağlar.Dizinlenmiş özellikler de etkinleştirmek kullanmanızı Value özelliğini Range nesnesini kullanma gereksinimini ortadan kaldırarak, Value2 özelliği.Value Özelliği dizine alınmış, ancak dizin isteğe bağlıdır.İsteğe bağlı bağımsız değişkenler ve dizinlenmiş ö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();
      

      Önceki dil sürümlerinde aşağıdaki özel bir sözdizimi gerekli değildir.

      // In Visual C# 2008, you cannot access the Range, Offset, and Value
      // properties directly.
      excelApp.get_Range("A1").Value2 = "ID";
      excelApp.ActiveCell.get_Offset(1, 0).Select();
      

      Dizinlenmiş özellikler kendi oluşturamazsınız.Özellik yalnızca varolan dizinlenmiş özelliklerin kullanımını destekler.

      Daha fazla bilgi için bkz. Nasıl yapılır: kullan dizine com birlikte çalışabilirlik programlama (C# Programlama Kılavuzu) özellikleri.

  2. Sonunda aşağıdaki kodu ekleyin DisplayInExcel içeriğine uyacak şekilde sütun genişliklerini ayarlamak için.

    ' Add the following two lines at the end of the With statement.
    .Columns(1).AutoFit()
    .Columns(2).AutoFit()
    
    excelApp.Columns[1].AutoFit();
    excelApp.Columns[2].AutoFit();
    

    C# 2010'da bir başka yeni özellik bu eklemeler göstermektedir: değerlendirmesini Object dönen değerleri gibi Office com ana türüne sahip oldukları gibi dinamik.Bu otomatik olarak gerçekleşir, Birlikte çalışma türlerini katıştır varsayılan değerine ayarlı True, ya da eşdeğer, ne zaman derleme tarafından başvurulan /Link derleyici seçeneği.Türü dynamic geç bağlama zaten Visual Basic'te kullanılabilen sağlar ve Visual C# 2008 ve önceki sürümlerinde dilin gerekli açık çevrim önler.

    Örneğin, excelApp.Columns[1] döndüren bir Object, ve AutoFit bir Excel aralık yöntem.Olmadan dynamic, nesne tarafından döndürülen dönüştürmelisiniz excelApp.Columns[1] çok Range önce yöntem çağırma AutoFit.

    // Casting is required in Visual C# 2008.
    ((Excel.Range)excelApp.Columns[1]).AutoFit();
    
    // Casting is not required in Visual C# 2010.
    excelApp.Columns[1].AutoFit();
    

    Interop tiplerini katıştırma hakkında daha fazla bilgi için yordamları "PIA başvuru bulmak için" ve "PIA bağımlılık geri yüklemek için" konusuna bakın.Hakkında daha fazla bilgi için dynamic, bkz: Dinamik (C# Reference) veya Tür dinamik (C# Programlama Kılavuzu) kullanma.

DisplayInExcel çağırmak için

  1. Sonunda aşağıdaki kodu ekleyin ThisAddIn_StartUp yöntem.Çağrı DisplayInExcel iki bağımsız değişkeni içerir.İlk bağımsız değişken işlenecek hesapların listesini adıdır.İkinci bağımsız değişken verileri nasıl işlenecek tanımlayan bir çok satırlı lambda ifadesidir.ID Ve balance değerleri her hesap için bitişik hücrelerde görüntülenen ve Bakiye küçükse sıfır satır kırmızı renkte görüntülenir.Çok satırlı lambda ifadeleri, Visual Basic 2010'daki yeni bir özelliğidir.Daha fazla bilgi için bkz. Lambda ifadeleri (Visual Basic).

    DisplayInExcel(bankAccounts,
           Sub(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 Then
                   cell.Interior.Color = RGB(255, 0, 0)
                   cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0)
               End If
           End Sub)
    
    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;
        }
    });
    
  2. Programı çalıştırmak için F5 tuşuna basın.Hesapları verileri içeren Excel çalışma sayfası görüntülenir.

Bir Word belgesine eklemek için

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

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

    Bu kod C# [NULL]'deki yeni özelliklerin bazılarını göstermektedir: ihmal yeteneği ref com programlama, adlandırılmış bağımsız değişkenleri ve isteğe bağlı bağımsız değişkeni bir anahtar sözcük.Visual Basic'te bu özellik zaten var.PasteSpecial yöntemi başvuru isteğe bağlı parametreler olarak tanımlanan tümü yedi parametrelere sahiptir.Visual C# 2010 önce göndermek için anlamlı değer değilse bile, yedi parametreler için bağımsız değişken olarak kullanmak üzere nesne değişkenleri tanımlamak gerekiyordu.Adlandırılmış ve isteğe bağlı bağımsız değişkenleri erişmek ve bu parametreleri yalnızca bağımsız değişkenler göndermek istediğiniz parametreleri belirlemek etkinleştirin.Bu örnekte, bağımsız değişkenler Pano üzerinde çalışma kitabına bağlantı oluşturulması gerektiğini göstermek için gönderilen (parametre Link), ve bağlantı Word belgesindeki bir simge olarak görüntülenecek olan (parametre DisplayAsIcon).Visual C# 2010 de sağlar, atlamak ref bu bağımsız değişkenler için anahtar sözcük.Aşağıdaki kod Visual C# 2008 segmentten Visual C# 2010'de gerekli tek satır karşılaştırın:

    // Call to PasteSpecial in Visual C# 2008.
    object iconIndex = Type.Missing;
    object link = true;
    object placement = Type.Missing;
    object displayAsIcon = true;
    object dataType = Type.Missing;
    object iconFileName = Type.Missing;
    object iconLabel = Type.Missing;
    wordApp.Selection.PasteSpecial(ref iconIndex,
                                   ref link,
                                   ref placement,
                                   ref displayAsIcon,
                                   ref dataType,
                                   ref iconFileName,
                                   ref iconLabel);
    
    // Call to PasteSpecial in Visual C# 2010.
    wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
    

Uygulamayı çalıştırmak için

  • F5 tuşuna basarak uygulamayı çalıştırın.Excel başlatır ve görüntüler iki hesap bilgisini içeren bir tablo bankAccounts.Daha sonra Excel tablosu için bir bağlantı içeren bir Word belgesini görünür.

Tamamlanmış projeyi temizlemek için

  • Visual Studio'da tıklatın Temiz çözüm , Yapı menüsü.Aksi halde, eklentinin bilgisayarınızda Excel açmak her zaman çalışacaktır.

PIA başvuru bulmak için

  1. Uygulamayı yeniden çalıştırın, ancak i Temiz çözüm.

  2. Üzerinde Start menüsünde tıklatın Tüm programları.İleri'yi Microsoft Visual Studio 2010, sonra Visual Studio Araçları, sonra Visual Studio komut istemi (2010).

  3. Türü ILDasm onu Visual Studio komut isteminde (2010) penceresi ve enter tuşuna basın.IL dasm penceresi görüntülenir.

  4. Üzerinde Dosya IL dasm penceresinde menüsünü açık.Çift Visual Studio 2010ve sonra çift Proje.Projeniz için klasörü açın ve bin/Debug klasörüne bakın Proje adına.dll.Çift Proje adına.dll.Yeni bir pencere yanı sıra diğer modülleri ve derlemeler başvuruları projenizin özniteliklerini görüntüler.Not Bu ad Microsoft.Office.Interop.Excel ve Microsoft.Office.Interop.Word derlemesinde bulunan.Visual Studio 2010'de varsayılan olarak derleyici duyduğunuz türler başvurulan bir PIA derlemenizi alır.

    Daha fazla bilgi için bkz. Nasıl yapılır: birleştirme içeriğini görüntüle.

  5. Çift bildirim simgesi.Proje tarafından başvurulan öğeler içeren derlemeler listesini içeren bir pencere görüntülenir.Microsoft.Office.Interop.Excelve Microsoft.Office.Interop.Word listesine dahil edilmemiş.Projenizi derlemenizi alınmış türleri, bir PIA başvuruları değil zorundadır.Bu dağıtımı kolaylaştırır.PIA kullanıcının bilgisayarda mevcut olması gerekmez ve bir uygulama belirli bir PIA sürümünün dağıtım gerektirmediğinden, tüm sürümlerinde gerekli API mevcut olduğunu uygulamaları birden çok Office sürümleriyle çalışmak üzere tasarlanabilir.

    PIA dağıtımını artık gerekli olmadığından Gelişmiş senaryolarda Office önceki sürümleri de dahil olmak üzere, birden çok sürümünde çalışan bir uygulama oluşturabilir.Ancak, yalnızca çalışmakta olduğunuz Office sürümünde bulunmayan API kodunuzu kullanmıyorsa bu çalışır.Her zaman belirli bir API önceki Office sürümleriyle çalışma neden önerilmediğini önceki bir sürümde ve kullanılabilir olup olmadığı açık değildir.

    [!NOT]

    Office PIA Office 2003 önce yayımlamak değil.Bu nedenle, Office 2002 veya önceki sürümleri için bir birlikte çalışma derlemesi oluşturmak için com başvurusu alarak aktarmaktýr.

  6. Bildirim penceresi ve derleme penceresini kapatın.

PIA bağımlılık geri yüklemek için

  1. İçinde Çözüm Gezgini, tıklayın Tüm dosyaları göster düğmesi.Genişletme başvuruları klasörüne ve seçme Microsoft.Office.Interop.Excel.Özellikler penceresini görüntülemek için F4 tuşuna basın.

  2. İçinde PropertieDeğiştir penceresi Birlikte çalışma türlerini katıştır özelliğinden doğru için yanlış.

  3. 1 Ve 2 için bu yordamdaki Microsoft.Office.Interop.Word.

  4. C# [NULL]'ta iki çağrıları açýklama Autofit sonunda DisplayInExcel yöntem.

  5. Projeyi yine de düzgün çalıştığını doğrulamak için F5 tuşuna basın.

  6. Önceki yordamdaki derleme penceresini açmak için 1 ile 3 arasındaki adımları yineleyin.Dikkat Microsoft.Office.Interop.Word ve Microsoft.Office.Interop.Excel artık katıştırılmış derlemeler listesinde değildir.

  7. Çift bildirim simgesi ve kaydırma listesi aracılığıyla başvurulan derlemelerin.Her ikisi de Microsoft.Office.Interop.Word ve Microsoft.Office.Interop.Excel listede yer almaktadır.Uygulama Excel ve Word PIA başvurduğundan ve Birlikte çalışma türlerini katıştır özelliği yanlış, her iki derleme son kullanıcının bilgisayarda bulunmalıdır.

  8. Visual Studio'da tıklatın Temiz çözüm , Yapı tamamlanmış projeyi temizlemek için menü.

Ayrıca bkz.

Görevler

Nasıl yapılır: kullan dizine com birlikte çalışabilirlik programlama (C# Programlama Kılavuzu) özellikleri

İzlenecek yol: Microsoft Office derlemelerine (C# ve Visual Basic) türü bilgileri katıştırma

İzlenecek yol: Yönetilen derlemeler (C# ve Visual Basic) türlerinden gömme

İzlenecek yol: İlk uygulama düzeyinde eklentiniz Excel oluşturma

Başvuru

Otomatik uygulanan özellikler (C# Programlama Kılavuzu)

Nesne ve koleksiyon Başlatıcı (C# Programlama Kılavuzu)

Dinamik (C# Reference)

Lambda ifadeleri (C# Programlama Kılavuzu)

Birlikte çalışabilirlik (C# Programlama Kılavuzu)

Kavramlar

Otomatik uygulanan özellikler (Visual Basic)

Koleksiyon Başlatıcı (Visual Basic)

İsteğe bağlı parametreler (Visual Basic)

Argümanları konumu ve adı (Visual Basic)

Adlandırılmış ve isteğe bağlı bağımsız değişkeni (C# Programlama Kılavuzu)

(Visual Basic) erken ve geç bağlama

Lambda ifadeleri (Visual Basic)

Diğer Kaynaklar

Tür dinamik (C# Programlama Kılavuzu) kullanma

com birlikte çalışabilirlik (Visual Basic)