Nasıl yapılır: Visual C# Özelliklerini Kullanarak Office Birlikte Çalışma Nesnelerine Erişim (C# Programlama Kılavuzu)
Visual C# 2010 Office API nesnelerine erişimi basitleştirmeye yeni özellikler sunar.Adlandırılmış ve isteğe bağlı bağımsız değişkenler, yeni özellikleri adlı yeni bir türü dynamicve COM yöntemleri parametrelere başvuru bağımsız değişkenleri değer parametreleri sahipmiş gibi geçirilecek özelliği.
Bu konudaki oluşturur ve Microsoft Office Excel çalışma görüntüleyen kod yazmak için yeni özellikleri kullanır.Ardından Excel çalışma sayfasına bağlantılı bir simge içeren bir Office Word belgesine eklemek için kod yazma.
Bu kılavuz tamamlamak için Microsoft Office Excel 2007 ve Microsoft Office Word 2007 veya sonraki sürümleri, bilgisayarınızda yüklü olması gerekir.
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.
Yeni bir konsol uygulama oluşturmak için
Visual Studio'yu başlatın.
Üzerinde dosya menüsü, işaretleyin yenive ardından proje.Yeni Proje iletişim kutusu görüntülenir.
İçindeki yüklü şablonlar bölmesinde genişletin **Visual C#**ve ardından Windows.
Ara en üstündeki yeni proje emin olmak için iletişim kutusu .NET Framework 4 (veya sonraki sürüm) bir hedef çerçevesi seçilir.
İçindeki şablonları bölmesinde tıklatın konsol uygulaması.
Projenizde için bir ad yazın adı alan.
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批准Microsoft.Office.Interop.Word içinde bileşen adı listesi ve anahtar ve seçin ve CTRL tuşunu basılı tutun Microsoft.Office.Interop.Excel.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.
Eklemek için gerekli yönergeleri kullanarak
İçindeki Çözüm Gezgini, sağ Program.cs dosya ve ardından görünüm kodu.
Aşağıdaki ekleyin using yönergelerini kod dosyasının dön.
using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word;
Bank hesaplarının listesi oluşturmak için
Aşağıdaki sınıf tanımının içine yapıştırın Program.csaltında Program sınıfı.
public class Account { public int ID { get; set; } public double Balance { get; set; } }
Aşağıdaki kod ekleyin Main oluşturmak için yöntemi bir bankAccounts iki hesaplarını içeren liste.
// Create a list of accounts. var bankAccounts = new List<Account> { new Account { ID = 345678, Balance = 541.27 }, new Account { ID = 1230221, Balance = -127.44 } };
Bir yöntem bildirmek için hesap bilgileri Excel'e verir
Aşağıdaki yöntemine ekleyin Program bir Excel çalışma ayarlamak için sınıf.
Yöntem Ekle belirli bir şablon belirtmek için isteğe bağlı bir parametre içeriyor.İ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 aşağıdaki kodda 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).
static void DisplayInExcel(IEnumerable<Account> accounts) { var excelApp = new Excel.Application(); // Make the object visible. excelApp.Visible = true; // Create a new, empty workbook and add it to the collection returned // by property Workbooks. The new workbook becomes the active workbook. // Add has an optional parameter for specifying a praticular template. // Because no argument is sent in this example, Add creates a new workbook. excelApp.Workbooks.Add(); // This example uses a single workSheet. The explicit type casting is // removed in a later procedure. Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet; }
Aşağıdaki kod sonunda Ekle DisplayInExcel.Kodu ilk satırın çalışma sayfasının ilk iki sütuna değerler ekler.
// Establish column headings in cells A1 and B1. workSheet.Cells[1, "A"] = "ID Number"; workSheet.Cells[1, "B"] = "Current Balance";
Aşağıdaki kod sonunda Ekle DisplayInExcel.foreach Döngü listeden çalışma sayfasının art arda satırların ilk iki sütunlara bilgileri hesaplarının koyar.
var row = 1; foreach (var acct in accounts) { row++; workSheet.Cells[row, "A"] = acct.ID; workSheet.Cells[row, "B"] = acct.Balance; }
Aşağıdaki kod sonunda Ekle DisplayInExcel İçeriği sığdırmak için sütun genişliği ayarlamak için.
workSheet.Columns[1].AutoFit(); workSheet.Columns[2].AutoFit();
C# ' ın önceki sürümlerinde olduğundan bu açık atamanın bu işlemler için gerekli ExcelApp.Columns[1] döndürür bir Object, ve AutoFit bir Excel aralık yöntemi.Aşağıdaki satırlar atamanın gösterir.
((Excel.Range)workSheet.Columns[1]).AutoFit(); ((Excel.Range)workSheet.Columns[2]).AutoFit();
Visual C# 2010ve sonraki sürümler, döndürülen dönüştürür Object için dynamic derlemesi tarafından başvurulan otomatik olarak /bağlantısını derleyici seçeneği veya eşdeğer, varsa Excel katıştırmak birlikte çalışma türlerini özelliği true.Bu özellik için varsayılan değer true şeklindedir.
Projeyi çalıştırın
Aşağıdaki satırın sonuna Ekle Main.
// Display the list in an Excel spreadsheet. DisplayInExcel(bankAccounts);
CTRL + F5'e basın.
İki hesap verileri içeren bir Excel çalışma sayfası görüntülenir.
Word belgesine eklemek için
Ek yolla göstermek için Visual C# 2010ve sonraki sürümler, Office artırır programlama, aşağıdaki kod Word uygulaması açar ve Excel çalışma ile bağlantılı bir simge oluşturur.
Yapıştır yöntemi CreateIconInWordDoc, daha sonra bu adımda sağlanan içine Program sınıfı.CreateIconInWordDocYöntem çağrıları için karmaşıklığını azaltmak için adlandırılmış ve isteğe bağlı bağımsız değişken kullanır Ekle ve denetlemeye.Bu çağrı olarak iki diğer yeni özellikler dahil Visual C# 2010 başvuru parametrelere sahip COM yöntemlerine basitleştirin.İlk olarak, değer parametreleri sahipmiş gibi bağımsız değişken başvuru parametreleri gönderebilirsiniz.Diğer bir deyişle, bir değişken başvurusu her parametre için oluşturmadan değerleri doğrudan, gönderebilir.Derleyici bağımsız değişken değerleri tutmak için geçici değişkenleri oluşturur ve çağrısından döndüğünüzde değişkenleri iptal eder.İkinci, atlayabilirsiniz ref anahtar sözcük içindeki bağımsız değişken listesi.
Add Yöntemi her biri, isteğe bağlı dört başvuru parametre sahiptir.İçindeki Visual C# 2010, veya sonraki sürümleri, atlamasını herhangi bir veya tüm parametreleri için bağımsız değişken varsayılan değerlerine kullanmak istiyorsanız.İçindeki Visual C# 2008 ve daha önceki sürümleri, bağımsız değişken için her parametresi sağlanmalıdır ve parametreleri başvuru parametreleri olduğundan bağımsız değişken bir değişken olmalıdır.
PasteSpecial Yöntemi Pano içeriğini ekler.Yöntemi, isteğe bağlı tümü yedi başvuru parametreleri vardır.Aşağıdaki kod iki biri için bağımsız değişken belirtir: Link, Pano içeriğini, kaynağı bir bağlantı oluşturmak için ve DisplayAsIcon, bağlantı simge olarak görüntülenecek.İçindeki Visual C# 2010, adlandırılmış değişkenleri için bu iki kullanın ve diğerleri atlayın.Bu başvuru parametreleri olsa da, kullanmanız gerekmez ref anahtar sözcüğü veya bağımsız değişken olarak göndermek için değişkenleri oluşturmak için.Değerleri doğrudan gönderebilirsiniz.İçindeki Visual C# 2008 ve önceki sürümlerinde, her başvuru parametre için değişken bir bağımsız değişken göndermelidir.
static void CreateIconInWordDoc() { var wordApp = new Word.Application(); wordApp.Visible = true; // The Add method has four reference parameters, all of which are // optional. Visual C# 2010 allows you to omit arguments for them if // the default values are what you want. wordApp.Documents.Add(); // PasteSpecial has seven reference parameters, all of which are // optional. This example uses named arguments to specify values // for two of the parameters. Although these are reference // parameters, you do not need to use the ref keyword, or to create // variables to send in as arguments. You can send the values directly. wordApp.Selection.PasteSpecial( Link: true, DisplayAsIcon: true); }
İçindeki Visual C# 2008 veya önceki sürümlerinde dili, aşağıdaki daha karmaşık kodu gereklidir.
static void CreateIconInWordDoc2008() { var wordApp = new Word.Application(); wordApp.Visible = true; // The Add method has four parameters, all of which are optional. // In Visual C# 2008 and earlier versions, an argument has to be sent // for every parameter. Because the parameters are reference // parameters of type object, you have to create an object variable // for the arguments that represents 'no value'. object useDefaultValue = Type.Missing; wordApp.Documents.Add(ref useDefaultValue, ref useDefaultValue, ref useDefaultValue, ref useDefaultValue); // PasteSpecial has seven reference parameters, all of which are // optional. In this example, only two of the parameters require // specified values, but in Visual C# 2008 an argument must be sent // for each parameter. Because the parameters are reference parameters, // you have to contruct variables for the arguments. object link = true; object displayAsIcon = true; wordApp.Selection.PasteSpecial( ref useDefaultValue, ref link, ref useDefaultValue, ref displayAsIcon, ref useDefaultValue, ref useDefaultValue, ref useDefaultValue); }
Aşağıdaki ifadeyi sonunda ekleyin Main.
// Create a Word document that contains an icon that links to // the spreadsheet. CreateIconInWordDoc();
Aşağıdaki ifadeyi sonunda ekleyin DisplayInExcel.Copy Yöntemi panoya çalışma ekler.
// Put the spreadsheet contents on the clipboard. The Copy method has one // optional parameter for specifying a destination. Because no argument // is sent, the destination is the Clipboard. workSheet.Range["A1:B3"].Copy();
CTRL + F5'e basın.
Bir simge içeren bir Word belgesine görünür.Çalışma için ön getirmek için simgesini çift tıklatın.
Birlikte çalışma türlerini katıştırmak özelliğini ayarlamak için
Çalışma zamanında birincil birlikte çalışma derlemesi (PIA) gerektirmeyen bir COM türü çağırdığınızda ek geliştirmeleri mümkündür.Bağımlılık PIA sonuçlarına sürümü Bağımsızlık ve daha kolay dağıtımı kaldırılıyor.Programlama PIA olmadan avantajları hakkında daha fazla bilgi için bkz: İzlenecek yol: Yönetilen Derlemelerden Türler Katıştırma (C# ve Visual Basic).
Gerekli ve COM yöntemleri tarafından döndürülen türleri türü kullanarak gösterilebilir. Ayrıca, programlama kolaydır, çünkü dynamic yerine Object.Türüne sahip değişkenleri dynamic açık atamanın gereksinimini ortadan kaldırır çalışma süresi kadar değerlendirilmez.Daha fazla bilgi için bkz. Tür dinamiği kullanma (C# Programlama Kılavuzu).
İçindeki Visual C# 2010, PIA kullanmak yerine türü bilgilerini katıştırmak olan varsayılan davranışı.Açık atamanın gerekli olmadığından, bu varsayılan nedeniyle, birkaç önceki örneklerin Basitleştirilmiş.Örneğin, bildirimi worksheet içinde DisplayInExcel olarak yazılan Excel._Worksheet workSheet = excelApp.ActiveSheet yerine Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet.Çağrılar AutoFit çünkü aynı yöntemi de varsayılan olmadan açık atamanın gerektirecek ExcelApp.Columns[1] döndürür bir Object, ve AutoFit bir Excel yöntemdir.Aşağıdaki kod atamanın gösterir.
((Excel.Range)workSheet.Columns[1]).AutoFit(); ((Excel.Range)workSheet.Columns[2]).AutoFit();
Varsayılan değiştirmek ve türü bilgilerini katıştırmak yerine PIA kullanmak için genişletme başvuruları düğümünde Çözüm Gezgini ve ardından seçin Microsoft.Office.Interop.Excel veya Microsoft.Office.Interop.Word.
Göremiyorsanız, özellikleri penceresinde, bas F4.
Bulma katıştırmak birlikte çalışma türlerini özellikleri, listesinde ve değerine Değiştir False.Eşdeğer, kullanarak hazırlayabilirsiniz /reference derleyici seçeneği yerine /bağlantısını bir komut isteminde.
Ek tabloya biçimlendirme eklemek için
İki çağrılar değiştirmek AutoFit içinde DisplayInExcel şu ifadeyle.
// Call to AutoFormat in Visual C# 2010. workSheet.Range["A1", "B3"].AutoFormat( Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
Otomatik biçimlendirme yöntemi her biri, isteğe bağlı yedi value parametreleri sahiptir.Adlandırılmış ve isteğe bağlı bağımsız değişkenlerini none, bazılarını veya tümünü bunları sağlamak etkinleştirin.Önceki bildiriminde parametreleri yalnızca biri için bağımsız değişken sağlanan Format.Çünkü Format ilk parametre: parametre listesinde parametre adı sağlayın gerekmez.Ancak, deyim parametre adı, aşağıdaki kodda gösterildiği gibi dahil olup olmadığını anlamak daha kolay olabilir.
// Call to AutoFormat in Visual C# 2010. workSheet.Range["A1", "B3"].AutoFormat(Format: Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
Sonuç görmek için CTRL + F5 tuşlarına basın.Diğer biçimlere listelenen XlRangeAutoFormat numaralandırması.
Adım 1 ile gerekli olan bağımsız değişkenler gösterir aşağıdaki kodu bildiriminde karşılaştırma Visual C# 2008 veya önceki sürümlerinde.
// The AutoFormat method has seven optional value parameters. The // following call specifies a value for the first parameter, and uses // the default values for the other six. // Call to AutoFormat in Visual C# 2008. This code is not part of the // current solution. excelApp.get_Range("A1", "B4").AutoFormat(Excel.XlRangeAutoFormat.xlRangeAutoFormatTable3, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Örnek
Aşağıdaki kod, tam bir örnek gösterir.
using System;
using System.Collections.Generic;
using System.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
namespace OfficeProgramminWalkthruComplete
{
class Walkthrough
{
static void Main(string[] args)
{
// Create a list of accounts.
var bankAccounts = new List<Account>
{
new Account {
ID = 345678,
Balance = 541.27
},
new Account {
ID = 1230221,
Balance = -127.44
}
};
// Display the list in an Excel spreadsheet.
DisplayInExcel(bankAccounts);
// Create a Word document that contains an icon that links to
// the spreadsheet.
CreateIconInWordDoc();
}
static void DisplayInExcel(IEnumerable<Account> accounts)
{
var excelApp = new Excel.Application();
// Make the object visible.
excelApp.Visible = true;
// Create a new, empty workbook and add it to the collection returned
// by property Workbooks. The new workbook becomes the active workbook.
// Add has an optional parameter for specifying a praticular template.
// Because no argument is sent in this example, Add creates a new workbook.
excelApp.Workbooks.Add();
// This example uses a single workSheet.
Excel._Worksheet workSheet = excelApp.ActiveSheet;
// Earlier versions of C# require explicit casting.
//Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
// Establish column headings in cells A1 and B1.
workSheet.Cells[1, "A"] = "ID Number";
workSheet.Cells[1, "B"] = "Current Balance";
var row = 1;
foreach (var acct in accounts)
{
row++;
workSheet.Cells[row, "A"] = acct.ID;
workSheet.Cells[row, "B"] = acct.Balance;
}
workSheet.Columns[1].AutoFit();
workSheet.Columns[2].AutoFit();
// Call to AutoFormat in Visual C# 2010. This statement replaces the
// two calls to AutoFit.
workSheet.Range["A1", "B3"].AutoFormat(
Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
// Put the spreadsheet contents on the clipboard. The Copy method has one
// optional parameter for specifying a destination. Because no argument
// is sent, the destination is the Clipboard.
workSheet.Range["A1:B3"].Copy();
}
static void CreateIconInWordDoc()
{
var wordApp = new Word.Application();
wordApp.Visible = true;
// The Add method has four reference parameters, all of which are
// optional. Visual C# 2010 allows you to omit arguments for them if
// the default values are what you want.
wordApp.Documents.Add();
// PasteSpecial has seven reference parameters, all of which are
// optional. This example uses named arguments to specify values
// for two of the parameters. Although these are reference
// parameters, you do not need to use the ref keyword, or to create
// variables to send in as arguments. You can send the values directly.
wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
}
}
public class Account
{
public int ID { get; set; }
public double Balance { get; set; }
}
}
Ayrıca bkz.
Görevler
Başvuru
Kavramlar
Adlandırılmış ve İsteğe Bağlı Bağımsız Değişkenler (C# Programlama Kılavuzu)