Aracılığıyla paylaş


Nasıl yapılır: Access Office birlikte çalışma nesnelerini Visual C# 2010 özelliklerini kullanarak (C# Programlama Kılavuzu)

Visual C# 2010 Office API nesnelere erişimi kolaylaştıran yeni özellikler sunar.Adlandırılmış ve isteğe bağlı bağımsız değişkenler, yeni özellikler adı verilen yeni bir tür dynamicve değer parametreleri yokmuş gibi başvuru parametrelerinde com yöntemleri bağımsız değişkenler aktarma yeteneği.

Bu konudaki oluşturur ve Microsoft Office Excel çalışma sayfasını görüntüleyen bir kod yazmak için yeni özellikler kullanır.Ardından Excel çalışma sayfasına bağlantılı bir simge içeren bir Office Word belgesine eklemek için kodu yazacaksınız.

Bu izlenecek yolu tamamlamak için Microsoft Office Excel 2007 ve Microsoft Office Word 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ı.

Yeni bir konsol uygulaması oluşturmak için

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

  2. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklatın.Yeni Proje iletişim kutusu görüntülenir.

  3. İçinde Yüklü şablonlar bölmesinde genişletin **Visual C#**ve ardından Windows.

  4. Üst kısmındaki Ara Yeni bir proje emin olmak için iletişim kutusu .net Framework 4 bir hedef çerçeve seçilir.

  5. İçinde şablonları bölmesinde tıklatın Console Application.

  6. İsim alanına projeniz için bir ad yazın.

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

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

Başvuruları eklemek için

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

  2. Üzerinde .net Seç sayfasında, Microsoft.Office.Interop.Word , Bileşen adı listelemek ve anahtar ve seçme ctrl tuşunu basılı tutarak Microsoft.Office.Interop.Excel.

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

Eklemek için gerekli yönergeleri kullanma

  1. İçinde Solution Explorer, sağ Program.cs dosya ve ardından View Code.

  2. Aşağıdaki using kodu dosyanın en üstüne yönergeleri.

    using Excel = Microsoft.Office.Interop.Excel;
    using Word = Microsoft.Office.Interop.Word;
    

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

  1. Aşağıdaki sınıf tanımının içine yapıştırın Program.cs, altında Program sınıfı.

    public class Account
    {
        public int ID { get; set; }
        public double Balance { get; set; }
    }
    
  2. Aşağıdaki kodu ekleyip Main yöntemi oluşturmak için bir bankAccounts iki hesabı 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
                    }
    };
    

Hesap bilgileri Excel'e verir bir yöntem bildirmek için

  1. Aşağıdaki yönteme ekleyin Program sınıfı, bir Excel çalışma sayfasına ayarlamak için.

    Yöntem ekleme özel bir şablonu belirtmek için isteğe bağlı bir parametre vardır.İsteğe bağlı parametreler, yeni Visual C# 2010, parametrenin varsayılan değeri kullanmak istiyorsanız, bu parametre için bağımsız değişkenini atlarsanız olanak tanır.Hiçbir bağımsız değişken aşağıdaki kodda 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).

    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;
    }
    
  2. Sonunda aşağıdaki kodu ekleyip DisplayInExcel.Kod değerleri çalışma sayfasının ilk satırı ilk iki sütuna ekler.

    // Establish column headings in cells A1 and B1.
    workSheet.Cells[1, "A"] = "ID Number";
    workSheet.Cells[1, "B"] = "Current Balance";
    
  3. Sonunda aşağıdaki kodu ekleyip DisplayInExcel.foreach Döngü listesinden gelen bilgileri hesaplarının ardışık satırları çalışma sayfasının ilk iki sütunun içine yerleştirir.

    
    var row = 1;
    foreach (var acct in accounts)
    {
        row++;
        workSheet.Cells[row, "A"] = acct.ID;
        workSheet.Cells[row, "B"] = acct.Balance;
    }
    
  4. Sonunda aşağıdaki kodu ekleyip DisplayInExcel içeriğine uyacak şekilde sütun genişliklerini ayarlamak için.

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

    C# [NULL]'ın önceki sürümlerinde olduğundan bu açık çevrim bu işlemler için gerekli ExcelApp.Columns[1] döndüren bir Object, ve AutoFit bir Excel, Aralık yöntemi.Aşağıdaki satırlar çevrim gösterir.

    ((Excel.Range)workSheet.Columns[1]).AutoFit();
    ((Excel.Range)workSheet.Columns[2]).AutoFit();
    

    Visual C# 2010döndürülen dönüştürür Object için dynamic otomatik olarak derlemeye başvurulduğundan, /link derleyici seçeneği veya equivalently, Excel Katıştırmak Interop türleri özelliği True.Bu özellik için varsayılan değer true olur.

Projeyi çalıştırın

  1. Sonuna aşağıdaki satırı ekleyin Main.

    // Display the list in an Excel spreadsheet.
    DisplayInExcel(bankAccounts);
    
  2. ctrl + F5 tuşlarına basın.

    İki hesap verileri içeren Excel çalışma sayfası görüntülenir.

Bir Word belgesine eklemek için

  1. Ek yolla göstermek için Visual C# 2010 Office geliştirir programlama, aşağıdaki kod, Word uygulamasını açar ve Excel çalışma sayfasına bağlantı yapan bir simge oluşturur.

    Yapıştırma yöntemi CreateIconInWordDoc, daha sonra bu adımda sağlanan içine Program sınıfı.CreateIconInWordDocyöntem çağrıları karmaşıklığını azaltmak için adlandırılmış ve isteğe bağlı bağımsız değişkenlerini kullanan Ekle ve PasteSpecial.Diğer iki yeni özelliklerinin bu aramalar dahil Visual C# 2010 başvurusu parametrelerine sahip com yöntemlerine basitleştirin.İlk olarak, değer parametreleri yokmuş gibi başvuru parametreleri için bağımsız değişkenler gönderebilirsiniz.Diğer bir deyişle, değerleri doğrudan, her başvuru parametresi için bir değişken oluşturmadan gönderebilirsiniz.Derleyici, bağımsız değişken değerleri tutmak için geçici değişkenleri oluşturur ve çağrısından geri döndüğünüzde değişkenlerini atar.İkinci olarak, ihmal ref bağımsız değişken listesi bir anahtar sözcük.

    Add Yönteminin tümü isteğe bağlı olan dört başvuru parametreleri vardır.De Visual C# 2010, varsayılan değerleri kullanmak istiyorsanız, bağımsız değişkenleri için herhangi bir veya tüm parametreleri atlayabilirsiniz.De Visual C# 2008 ve önceki sürümleri, her parametre için bir bağımsız değişken sağlanmalıdır ve başvuru parametreleri parametreleri, çünkü bağımsız bir değişken olmalıdır.

    PasteSpecial Yöntemi, Pano içeriğini ekler.Yöntem tümü isteğe bağlı olan yedi başvurusu parametrelerine sahiptir.Aşağıdaki kodda ikisi bağımsız değişkenleri belirtir: Link, Pano içeriğinin kaynağına bir bağlantı oluşturmak için ve DisplayAsIcon, bağlantıyı bir simge olarak görüntülemek için.De Visual C# 2010, bu iki adlandırılmış bağımsız değişkenleri kullanın ve diğerlerini atlayabilirsiniz.Bu başvuru parametreleri olmakla birlikte, kullanmak gerekmez ref anahtar sözcüğü veya bağımsız değişken olarak gönder alanında değişken oluşturmak için.Değerleri doğrudan gönderebilirsiniz.De Visual C# 2008 ve önceki sürümlerinde, bir değişken bağımsız değişken her başvuru parametresi için yeniden gönderdiğiniz gerekir.

    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);
    }
    

    De Visual C# 2008 veya önceki sürümleri aşağıdaki dil daha karmaşık kod 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);
    }
    
  2. Sonunda aşağıdaki ifadeyi ekleyin Main.

    // Create a Word document that contains an icon that links to
    // the spreadsheet.
    CreateIconInWordDoc();
    
  3. Sonunda aşağıdaki ifadeyi ekleyin DisplayInExcel.Copy Yöntemi, Pano'ya çalışma sayfası 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();
    
  4. ctrl + F5 tuşlarına basın.

    Bir Word belgesini içeren bir simge görünür.Çalışma sayfasını ön plana getirmek için simgesini çift tıklatın.

Birlikte çalışabilirlik tiplerini katıştırma özelliğini ayarlamak için

  1. Çalışma zamanında birincil birlikte çalışma derlemesi (PIA) gerektirmeyen bir com türü çağırdığınızda ek geliştirmeler mümkün olabilir.PIA sonuçları bağımlılık sürümü bağımsızlığı ve daha kolay dağıtım kaldırılıyor.PIA programlamadan faydaları hakkında daha fazla bilgi için bkz: İzlenecek yol: Yönetilen derlemeler (C# ve Visual Basic) türlerinden gömme.

    Buna ek olarak, gerekli ve com yöntemi tarafından döndürülen türleri türünü kullanarak temsil edilebilir çünkü programlama daha kolay dynamic yerine Object.Türündeki değişkenleri dynamic kadar açık çevrim gereksinimini ortadan kaldıran, çalışma zamanı değerlendirilmez.Daha fazla bilgi için bkz. Tür dinamik (C# Programlama Kılavuzu) kullanma.

    De Visual C# 2010, PIA kullanmak yerine türü bilgileri katıştırma, varsayılan davranıştır.Açık çevrim gerekli olmadığı için bu varsayılan nedeniyle birkaç önceki örneklerin basitleştirilmiştir.Örneğin, bildirimi worksheet , DisplayInExcel olarak yazılmış Excel._Worksheet workSheet = excelApp.ActiveSheet yerine Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet.Çağrıları AutoFit çünkü aynı yönteminde de varsayılan olmayan açık çevrim gerektirecek ExcelApp.Columns[1] döndüren bir Object, ve AutoFit Excel yöntemidir.Aşağıdaki kod, çevrim gösterir.

    ((Excel.Range)workSheet.Columns[1]).AutoFit();
    ((Excel.Range)workSheet.Columns[2]).AutoFit();
    
  2. PIA türü bilgileri katıştırmak yerine kullanın ve varsayılan değiştirmek için genişletme başvuruları düğümünde Solution Explorer seçip Microsoft.Office.Interop.Excel veya Microsoft.Office.Interop.Word.

  3. Eğer Özellikler penceresini göremezseniz, F4'e basın.

  4. Bul Gömme Interop türleri özellikler listesinde ve değerine geri değiştirin yanlış.Equivalently, kullanarak derleyebilirsiniz /Reference derleyici seçeneği yerine /link komut isteminden.

Ek tablo biçimlendirme eklemek için

  1. İki çağrıları yerine AutoFit , DisplayInExcel şu ifadeyle.

    // Call to AutoFormat in Visual C# 2010.
    workSheet.Range["A1", "B3"].AutoFormat(
        Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
    

    Otomatik Biçim yönteminin tümü isteğe bağlı olan yedi değer parametreleri vardır.Adlandırılmış ve isteğe bağlı bağımsız değişkenler yok, bazı veya tüm bunlardan bağımsız değişkenleri girmenize olanak sağlar.Önceki ifadede bağımsız değişken parametreleri yalnızca biri için sağlanan Format.Çünkü Format ilk parametresi parametre listesinde parametre adı girmeniz gerekmez.Ancak, deyimi parametre adı, aşağıdaki kodda gösterildiği gibi dahil olup olmadığını anlamanız daha kolay olabilir.

    // Call to AutoFormat in Visual C# 2010.
    workSheet.Range["A1", "B3"].AutoFormat(Format:
        Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
    
  2. Sonucu görmek için ctrl + F5 tuşlarına basın.Diğer biçimler listelenen XlRangeAutoFormat numaralandırma.

  3. Gerekli bağımsız değişkenleri gösteren aşağıdaki kodu, 1. adımda ifadesi karşılaştırmak Visual C# 2008 veya önceki sürümleri.

    // 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

Örneğin aşağıdaki kodu gösterilir.

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

Nasıl yapılır: (C# Programlama Kılavuzu) programlama ofisinde adlandırılmış ve isteğe bağlı bağımsız değişkenlerini kullanma

Başvuru

Dinamik (C# Reference)

Type.Missing

Kavramlar

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

Diğer Kaynaklar

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