İzlenecek yol: Office Programlama (C# ve Visual Basic)
Visual Studio 2010Microsoft Office programlama geliştirmek C# ve Visual Basic yeni özellikler sunar.Her bir dilin başka bir dilde zaten mevcut özellik eklemiştir.
C# ' deki yeni özelliklerin adlandırılmış ve isteğe bağlı bağımsız değişkenleri ekleyin, dönüş türü olan değerleri dynamicve programlama, atlamalısınız olanağı COM ref anahtar sözcük ve Dizinli Özellikler erişmek için.Visual Basic yeni özellikler lambda ifadeleri ve toplama başlatıcılar bilgilerinin otomatik uygulanan özellikler içerir.
Her iki dilleri kullanıcının bilgisayarına birincil birlikte çalışma derlemeleri dağıtmadan COM bileşenlerle etkileşime kurulumları dağıtımı verir türü bilgilerinin katıştırmak etkinleştirin.Daha fazla bilgi için bkz. İzlenecek yol: Yönetilen Derlemelerden Türler Katıştırma (C# ve Visual Basic).
Bu kılavuz Office programlama bağlamındaki yeni özellikleri gösterir, ancak birçoğu de genel programlama yararlıdır.Örnekte, bir Excel çalışma kitabı oluşturmak için önce bir Excel eklentisi uygulama kullanacaksınız.Ardından, çalışma kitabını bir bağlantı içeren bir Word belgesini oluşturur.Son olarak, PIA bağımlılık açılıp nasıl kapatılabilir göreceksiniz.
Önkoşullar
Microsoft Office Excel 2013 (veya sürüm 2007 veya üstü) olmalı ve bu yönergeyi tamamlamak için bilgisayarınızda Microsoft Office Word 2013 (veya sürüm 2007 veya sonraki sürümü) yüklü.
Daha eski bir işletim sistemi kullanıyorsanız, Windows Vista, emin olun .NET Framework 2,0 yüklenir.
[!NOT]
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. Visual Studio'da Geliştirme Ayarlarını özelleştirme.
Excel eklentisi uygulama ayarlama için
Visual Studio'yu başlatın.
Üzerinde dosya menüsü, işaretleyin yenive ardından proje.
İçindeki yüklü şablonlar bölmesinde genişletin Visual Basic veya Visual C#, genişletme Officeve ardından 2013 (veya 2010 veya 2007).
İçindeki şablonları bölmesinde tıklatın Excel 2013 eklentisini (veya Excel 2010 Eklentisi veya Excel 2007 Eklentisi).
Ara en üstündeki şablonları emin olmak için bölmesi .NET Framework 4, veya sonraki bir sürümünü göründüğü hedef çerçevesi kutusu.
Projenizde için bir ad yazın adı istiyorsanız kutusuna.
Tamam düğmesini tıklatın.
Yeni Proje görünür Çözüm Gezgini.
Başvuruları eklemek için
İçindeki Çözüm Gezgini, projenizin adını sağ tıklatın ve ardından Başvuru Ekle.Başvuru Ekle iletişim kutusu görüntülenir.
Üzerinde derlemeleri sekmesini seçin Microsoft.Office.Interop.Excel, sürüm 15.0.0.0 (veya sürüm 14.0.0.0 Excel 2010 için veya Excel 2007 için 12.0.0.0 sürümü) bileşen adı listesi ve anahtar ve seçin ve CTRL tuşunu basılı tutun Microsoft.Office.Interop.Word, sürüm 15.0.0.0 (veya sürüm 14.0.0.0 Word 2010 veya Word 2007 için 12.0.0.0 için).Derlemeleri görmüyorsanız, yüklü ve görüntülenen emin olmak gerekebilir (bkz Nasıl Yapılır: Office Birincil Birlikte Çalışma Derlemelerini Yükleme).
Tamam düğmesini tıklatın.
Gerekli Imports ifadelerini eklemek için veya yönergeleri kullanarak
İçindeki Çözüm Gezgini, sağ ThisAddIn.vb veya ThisAddIn.cs dosya ve ardından görünüm kodu.
Aşağıdaki ekleyin Imports bilgilerinin (Visual Basic) veya using yönergelerini (C#) önceden yoksa, kod dosyasının dön.
Imports Microsoft.Office.Interop
using System.Collections.Generic; using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word;
Bank hesaplarının listesi oluşturmak için
İçindeki Çözüm Gezgini, projenizin adını sağ tıklayın, Ekleve ardından sınıf.C# kullanıyorsanız, Visual Basic veya Account.cs kullanıyorsanız, Account.vb sınıf adı.Ekle‘ye tıklayın.
Tanımı Değiştir Account aşağıdaki kodla sınıfı.Sınıf tanımlarını kullanın otomatik uygulanan Özellikler, yeni Visual Basic, Visual Studio 2010 için.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; } }
Oluşturmak için bir bankAccounts eklemek için aşağıdaki kod iki hesaplarını içeren liste ThisAddIn_Startup ThisAddIn.vb veya ThisAddIn.cs yönteminde.Liste bildirimleri kullanın toplama başlatıcılar, yeni Visual Basic, Visual Studio 2010 için.Daha fazla bilgi için bkz. Koleksiyon Başlatıcıları (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 } };
Veri Excel'e
Aynı dosyasında, aşağıdaki yöntemi ekleyin ThisAddIn sınıfı.Yöntem bir Excel çalışma kitabı ayarlar veri ve izin verir.
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(); }
İki yeni C# özelliği bu yönteminde kullanılır.Bu özelliklerin her ikisi de, Visual Basic'te zaten mevcut.
Yöntem Ekle sahip bir isteğe bağlı bir parametre belirli bir şablon belirtmek için.İsteğe bağlı parametreleri, yeni Visual C# 2010, parametrenin varsayılan değerini kullanmak istiyorsanız, bu parametre için bağımsız değişken atlamanızı sağlar.Hiçbir bağımsız değişkeni önceki örnekte gönderildiğinden Add varsayılan şablon kullanır ve yeni bir çalışma kitabı oluşturur.C# ' ın önceki sürümlerinde eşdeğer deyimi bir yer tutucu bağımsız değişken gerektiriyor: 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 (C# Programlama Kılavuzu).
Range Ve Offset özelliklerini aralık nesnesi kullanım özellikleri dizine özelliği.Bu özellik aşağıdaki tipik C# sözdizimini kullanarak bu COM türlerini özelliklerinden kullanılmasına olanak sağlar.Dizinli Özellikler de olanak kullanılacak Value özelliği Range nesne, kullanma gereksinimini ortadan Value2 özelliği.Value Özelliği dizine, ancak dizin isteğe bağlıdır.İsteğe bağlı bağımsız değişkenler ve dizinli ö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();
Dil önceki sürümlerinde aşağıdaki özel sözdizimini gereklidir.
// 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();
Dizinli Özellikler kendi oluşturulamıyor.Özellik yalnızca varolan Dizinli Özellikler tüketimini destekler.
Daha fazla bilgi için bkz. Nasıl yapılır: COM Birlikte Çalışma Programlamada Dizin Oluşturulmuş Özellikleri Kullanma (C# Programlama Kılavuzu).
Aşağıdaki kod sonunda Ekle DisplayInExcel İçeriği sığdırmak için sütun genişliği 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 başka yeni özelliği bu eklemeleri göstermek: kabul Object döndürülen değerlerin Office gibi COM konağından türüne sahipse gibi dinamik.Otomatik olarak gerçekleşir olduğunda katıştırmak birlikte çalışma türlerini varsayılan değerine ayarlanmış True, veya eşdeğer, ne zaman derlemesi tarafından başvurulan /bağlantısını derleyici seçeneği.Türü dynamic geç bağlama, zaten bir Visual Basic kullanılabilir sağlar ve Visual C# 2008 ve önceki sürümlerinde dilin gerekli açık atamanın önler.
Örneğin, excelApp.Columns[1] döndüren bir Object, ve AutoFit bir Excel aralık yöntemi.Olmadan dynamic, tarafından döndürülen nesne atamalısınız excelApp.Columns[1] örneği olarak Range önce yöntemi çağırmadan 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();
Birlikte çalışabilirlik türleri katıştırmak 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" daha sonra bu konusuna bakın.Hakkında daha fazla bilgi için dynamic, bakın dynamic (C# Başvurusu) veya Tür dinamiği kullanma (C# Programlama Kılavuzu).
DisplayInExcel çağırmak için
Aşağıdaki kod sonunda Ekle ThisAddIn_StartUp yöntemi.Çağrı DisplayInExcel iki bağımsız değişken içerir.İlk bağımsız değişken işlenecek hesapların listesini adıdır.İkinci bağımsız değişken veri işlenecek şeklini tanımlayan bir çok satırlı lambda ifadesidir.ID Ve balance her hesap için değerleri bitişik hücreleri görüntülenir ve Bakiye küçükse sıfır satır kırmızı olarak görüntülenir.Çok satırlı lambda ifadeleri, Visual Basic 2010 yeni bir özelliktir.Daha fazla bilgi için bkz. Lambda İfadeleri (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; } });
Programı çalıştırmak için F5'e basın.Excel çalışma hesaplarından veri içeren görüntülenir.
Word belgesine eklemek için
Aşağıdaki kod sonunda Ekle ThisAddIn_StartUp Excel çalışma kitabı için bir bağlantı içeren bir Word belge 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 birkaç C# ' deki yeni özelliklerin gösterir: atlamalısınız olanağı ref COM programlama, adlandırılmış değişkenleri ve isteğe bağlı bağımsız değişkeni bir anahtar sözcük.Bu özellikler, Visual Basic'te zaten mevcut.Denetlemeye yöntemi isteğe bağlı başvuru parametre olarak tanımlanan tümü yedi parametrelere sahip.Visual C# 2010, önce gönderilecek anlamlı hiçbir değer varken yedi parametreleri için bağımsız değişken olarak kullanmak için nesne değişkenlerini tanımlamak vardı.Adlandırılmış ve isteğe bağlı bağımsız değişkenleri ada göre erişmek için ve bu parametreleri yalnızca bağımsız değişken göndermek istediğiniz parametreleri tanımlamak üzere etkinleştirin.Bu örnekte, çalışma kitabına Panodaki bağlantı oluşturulması gerektiğini belirtmek için bağımsız değişkenler gönderilir (parametre Link), ve Word belgesine simge olarak görüntülenecek olan bağlantıyı (parametre DisplayAsIcon).Visual C# 2010 de atlamalısınız olanak sağlar ref bu bağımsız değişken için bir anahtar sözcük.Aşağıdaki kod kesim Visual C# 2008 Visual C# 2010'gerekli tek satırlı Karşılaştırılacak:
// 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
- Uygulamayı çalıştırmak için F5'e basın.Excel başlatır ve iki hesaplarında bilgileri içeren bir tablo görüntüler bankAccounts.Ardından Word belgesine Excel tablosuna bir bağlantı içeren görüntülenir.
Tamamlanmış projeyi temizlemek için
- Visual Studio tıklayın temiz çözüm üzerinde yapı menü.Aksi halde, eklenti, Excel, bilgisayarınıza her açışınızda çalışacaktır.
PIA başvuru bulmak için
Uygulamayı yeniden çalıştırın, ancak'i temiz çözüm.
Üzerinde Başlat menüsünde tıklatın tüm programlar.İleri'ye tıklayın Microsoft Visual Studio 2013, ardından Visual Studio Araçları, ardından Visual Studio komut istemi (2013).
Türü ildasm Visual Studio komut isteminde (2013) penceresi ve ardından ENTER tuşuna basın.IL DASM penceresi görüntülenir.
Üzerinde dosya IL DASM penceresinde menüsünü açık.Çift tıklatın Visual Studio 2013ve çift tıklatın projeleri.Klasör için projenizi açın ve bin/Debug klasörüne bakın , proje adı.dll.Çift tıklatın , proje adı.dll.Yeni bir pencere diğer modüller ve derleme başvuruları ek olarak, projenizin öznitelikleri görüntüler.Bu ad alanları Not Microsoft.Office.Interop.Excel ve Microsoft.Office.Interop.Word derlemesinde dahil edilir.Visual Studio 2013'teki varsayılan olarak, derleyici, derlemeye başvurulan bir PIA ihtiyacınız türlerini alır.
Daha fazla bilgi için bkz. Nasıl yapılır: Derleme İçeriklerini Görüntüleme.
Çift tıklatın bildirim simge.Proje tarafından başvurulan öğeleri içeren bir derleme listesi içeren bir pencere açılır.Microsoft.Office.Interop.Excelve Microsoft.Office.Interop.Word listesinde dahil edilmez.Projenizi, derlemeye alınan türleri, bir PIA başvuruları olmadığından gerekli.Bu dağıtım kolaylaştırır.PIA kullanıcının bilgisayarda mevcut olması gerekmez ve bir uygulamayı bir PIA belirli bir sürümünü dağıtımını gerektirmez olduğundan, gerekli API'leri tüm sürümlerinde mevcut koşuluyla uygulamaları Office, birden çok sürümleri ile çalışmak için tasarlanmış olabilir.
PIA dağıtımını gerekli olduğundan, bir uygulama birden çok daha önceki sürümleri de dahil olmak üzere, Office sürümleriyle çalışan Gelişmiş senaryolarında oluşturabilirsiniz.Ancak, yalnızca kodunuzu çalıştığınız Office sürümünde kullanılabilir değil tüm API'leri kullanmıyorsa bu çalışır.Her zaman belirli bir API Office önceki sürümleriyle çalışma nedeni önerilmez kullanılabilir önceki bir sürümünü ve için olup Temizle değildir.
[!NOT]
Office Office 2003 önce PIA yayımlama değil.Bu nedenle, Office 2002 veya önceki sürümleri için bir birlikte çalışma derlemesi oluşturmak için tek COM başvurusu alarak yoludur.
Bildirim ve derleme penceresinde kapatın.
PIA bağımlılık geri yüklemek için
İçindeki Çözüm Gezgini, tıklatın tüm dosyaları göster düğmesine tıklayın.Genişletme başvuruları klasör ve seçin Microsoft.Office.Interop.Excel.Basın görüntülemek için F4 özellikleri pencere.
İçindeki Properties penceresinde değişiklik katıştırmak birlikte çalışma türlerini özelliğinden True için False.
1 ve 2 için bu yordamda Microsoft.Office.Interop.Word.
C# ' ta iki çağrılar kullanıma açıklama Autofit sonunda DisplayInExcel yöntemi.
Proje yine de düzgün çalıştığını doğrulamak için F5'e basın.
Derleme penceresi açmak için önceki yordamı 1-3 adımları yineleyin.Dikkat Microsoft.Office.Interop.Word ve Microsoft.Office.Interop.Excel artık katıştırılmış derlemeleri listesinde değil.
Çift tıklatın bildirim simge ve listesini kaydırın başvurulan derlemeler.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 katıştırmak birlikte çalışma türlerini özelliği False, her iki derlemeleri son kullanıcının bilgisayarda bulunmalıdır.
Visual Studio tıklayın temiz çözüm üzerinde yapı tamamlanmış projeyi temizlemek için menü.
Ayrıca bkz.
Görevler
İzlenecek yol: Microsoft Office Derlemelerinden Tür Bilgilerini Katıştırma (C# ve Visual Basic)
İzlenecek yol: Yönetilen Derlemelerden Türler Katıştırma (C# ve Visual Basic)
İzlenecek Yol: Excel İçin İlk Uygulama Düzeyi Eklentiyi Oluşturma
Başvuru
Otomatik Uygulanan Özellikler (C# Programlama Kılavuzu)
Nesne ve Koleksiyon Başlatıcıları (C# Programlama Kılavuzu)
Lambda İfadeleri (C# Programlama Kılavuzu)
Birlikte Çalışabilirlik (C# Programlama Kılavuzu)
Kavramlar
Otomatik Uygulanan Özellikler (Visual Basic)
Koleksiyon Başlatıcıları (Visual Basic)
İsteğe Bağlı Parametreler (Visual Basic)
Bağımsız Değişkenleri Konuma ve Ada Göre Geçirme (Visual Basic)
Adlandırılmış ve İsteğe Bağlı Bağımsız Değişkenler (C# Programlama Kılavuzu)
Erken ve Geç Bağlama (Visual Basic)
Lambda İfadeleri (Visual Basic)