Sdílet prostřednictvím


Jak: Office Access Interop objektů pomocí aplikace Visual C# 2010 funkcí (C# Příručka programování)

Visual C# 2010 zavádí nové funkce, které usnadňují přístup k objektům Office API.Nové funkce zahrnují pojmenované a volitelné argumenty nového typu se nazývá dynamica schopnost předat argumenty parametry referenčních metod modelu COM, jako by byly hodnoty parametrů.

V tomto tématu bude používat nové funkce psát kód, který vytvoří a zobrazí se list aplikace Microsoft Office Excel.Potom bude zapisovat kód přidání dokumentu Office Word, který obsahuje ikonu, která je propojena s listem aplikace Excel.

K dokončení tohoto postupu musíte mít aplikaci Microsoft Office Excel 2007 a Microsoft Office Word 2007 v počítači nainstalována.

Pokud používáte operační systém, který je starší než Windows Vista, ujistěte se, že .NET Framework 2.0 je nainstalován.

[!POZNÁMKA]

Ve vašem počítači se pro některé z prvků uživatelského rozhraní sady Visual Studio mohou zobrazit jiné názvy a umístění, než jsou uvedeny v následujících pokynech. Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením. Další informace naleznete v tématu Nastavení aplikace Visual Studio.

Vytvoření nové aplikace konzoly

  1. Spusťte aplikaci Visual Studio.

  2. V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).Zobrazí se dialogové okno Nový projekt.

  3. V Nainstalované šablony podokně rozbalte položku **Visual C#**a klepněte na tlačítko Windows.

  4. Oblast v horní části Nový projekt dialogovém okně zkontrolujte, zda .NET Framework 4 je vybrána jako cílový rámec.

  5. V podokně Šablony klikněte na Aplikace konzoly.

  6. Zadejte název projektu název pole.

  7. Klikněte na tlačítko OK.

    Nový projekt se objeví v Aplikaci Solution Explorer.

Přidat odkazy

  1. V Aplikaci Solution Explorer, klepněte pravým tlačítkem na název projektu a klepněte na tlačítko Přidat odkaz na.Přidat odkaz na se zobrazí dialogové okno.

  2. Na .NET stránky vyberte Microsoft.Office.Interop.Word v Název součásti seznam a potom podržte klávesu CTRL klíče a vyberte Microsoft.Office.Interop.Excel.

  3. Klikněte na tlačítko OK.

Přidání nezbytné použití směrnic

  1. V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši Program.cs souboru a klepněte na tlačítko Zobrazení kódu.

  2. Přidejte následující using směrnic na začátek souboru kódu.

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

Vytvořit seznam bankovních účtů

  1. Vložte následující definici třídy do Program.cspod Program třídy.

    public class Account
    {
        public int ID { get; set; }
        public double Balance { get; set; }
    }
    
  2. Přidejte následující kód Main metoda vytvoření bankAccounts seznam, který obsahuje dva účty.

    // Create a list of accounts.
    var bankAccounts = new List<Account> {
        new Account { 
                      ID = 345678,
                      Balance = 541.27
                    },
        new Account {
                      ID = 1230221,
                      Balance = -127.44
                    }
    };
    

Deklarovat metodu, která exportuje do aplikace Excel informace o účtu

  1. Přidat metodu Program třídy nastavení listu aplikace Excel.

    Metoda Přidat má volitelný parametr určující konkrétní šablony.Volitelné parametry v Visual C# 2010, umožňují argument parametru vynechat, chcete-li použít výchozí hodnotu parametru.Protože v následujícím kódu je odeslán žádný argument Add používá výchozí šablonu a vytvoří nový sešit.Ekvivalentní příkazu v dřívějších verzích jazyka C# vyžaduje argument zástupný symbol: 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. Přidejte následující kód na konci DisplayInExcel.Kód vloží hodnoty do prvních dvou sloupců listu z prvního řádku.

    // Establish column headings in cells A1 and B1.
    workSheet.Cells[1, "A"] = "ID Number";
    workSheet.Cells[1, "B"] = "Current Balance";
    
  3. Přidejte následující kód na konci DisplayInExcel.foreach Smyčky vloží informace ze seznamu účtů do prvních dvou sloupců po sobě jdoucích řádků listu.

    
    var row = 1;
    foreach (var acct in accounts)
    {
        row++;
        workSheet.Cells[row, "A"] = acct.ID;
        workSheet.Cells[row, "B"] = acct.Balance;
    }
    
  4. Přidejte následující kód na konci DisplayInExcel na šířku sloupců přizpůsobit obsah.

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

    Starší verze jazyka C# vyžadují explicitní obsazení pro tyto operace, protože ExcelApp.Columns[1] vrátí Object, a AutoFit aplikace Excel je oblast metoda.Následující řádky zobrazit obsazení.

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

    Visual C# 2010Převede vrácené Object na dynamic automaticky, pokud se odkazuje sestavení /link volba kompilátoru nebo equivalently, pokud aplikace Excel Vložit typy volání Interop je vlastnost nastavena na hodnotu true.PRAVDA je výchozí hodnota této vlastnosti.

Spuštění projektu

  1. Přidejte následující řádek na konci Main.

    // Display the list in an Excel spreadsheet.
    DisplayInExcel(bankAccounts);
    
  2. Stiskněte CTRL+F5.

    Zobrazí se list aplikace Excel obsahující data z obou účtů.

Přidat dokument aplikace Word

  1. Další způsoby, které ilustrují Visual C# 2010 Office rozšiřuje programování, následující kód spustí aplikaci Word a vytvoří ikony, které odkazují na listu aplikace Excel.

    Vložit metodu CreateIconInWordDoc, uvedených dále v tomto kroku do Program třídy.CreateIconInWordDocpoužívá pojmenované a volitelné argumenty snížit složitost volání metody Přidat a PasteSpecial.Tyto hovory začlenit dva další nové funkce Visual C# 2010 , zjednodušení volání metod modelu COM, které mají parametry odkaz.První můžete odeslat argumenty referenční parametry jako by byly hodnoty parametrů.Můžete odeslat hodnoty přímo, bez vytvoření proměnné pro každý parametr odkaz.Kompilátor vygeneruje dočasné proměnné pro uložení hodnot argumentu a při návratu z volání zahodí proměnné.Za druhé, můžete vynechat ref klíčové slovo v seznamu argumentů.

    Add Metoda má čtyři parametry reference, které jsou volitelné.V Visual C# 2010, pokud chcete použít výchozí hodnoty můžete vynechat argumenty pro všechny parametry.V Visual C# 2008 a starší verze argument musí být uvedeny pro každý parametr a argument musí být proměnná, protože parametry jsou parametry odkaz.

    PasteSpecial Metoda vloží obsah schránky.Metoda má sedm referenční parametry, které jsou volitelné.Následující kód specifikuje dva argumenty: Link, vytvořit odkaz na zdroj obsahu schránky a DisplayAsIcon, na odkaz zobrazit jako ikonu.V Visual C# 2010, můžete použít pojmenované argumenty pro tyto dvě a ostatní vynechat.Přestože tyto parametry odkaz, není nutné použít ref klíčové slovo, nebo vytvořit proměnné, odeslat jako argumenty.Hodnoty můžete odeslat přímo.V Visual C# 2008 a starší verze, je nutné odeslat proměnné argument pro každý parametr odkaz.

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

    V Visual C# 2008 nebo starší verze jazyka následující složitější kód je vyžadován.

    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. Přidejte následující příkaz na konci Main.

    // Create a Word document that contains an icon that links to
    // the spreadsheet.
    CreateIconInWordDoc();
    
  3. Přidejte následující příkaz na konci DisplayInExcel.Copy Metoda přidá listu do schránky.

    // 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. Stiskněte CTRL+F5.

    Dokument aplikace Word se zobrazí ikona obsahuje.Poklepáním na ikonu listu přenést do popředí.

Nastavení vlastnosti vložit typy spolupráce

  1. Další vylepšení jsou možné při volání typu COM, který nevyžaduje primární sestavení interop (PIA) v době spuštění.Odebráním závislosti na výsledcích PIA verze nezávislost a snadnější zavedení.Další informace o výhodách programování bez PIA Názorný postup: Vkládání typy z spravované sestavení (C# a Visual Basic).

    Programování je navíc snazší, protože typy, které jsou nezbytné a vrácené metod modelu COM lze znázornit pomocí typu dynamic namísto Object.Proměnné, které mají typ dynamic do běhu, což eliminuje potřebu explicitní obsazení nebudou vyhodnoceny.Další informace naleznete v tématu Pomocí dynamického typu (C# program televize).

    V Visual C# 2010, vložení informací o typu namísto PIA je výchozí chování.Z důvodu, že výchozí několik předchozí příklady jsou zjednodušeny protože explicitní obsazení není vyžadováno.Například prohlášení o worksheet v DisplayInExcel je zapsán jako Excel._Worksheet workSheet = excelApp.ActiveSheet namísto Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet.Volání na AutoFit ve stejné metody také vyžadovalo explicitní obsazení bez výchozí, protože ExcelApp.Columns[1] vrátí Object, a AutoFit je metoda aplikace Excel.Následující kód ukazuje obsazení.

    ((Excel.Range)workSheet.Columns[1]).AutoFit();
    ((Excel.Range)workSheet.Columns[2]).AutoFit();
    
  2. Chcete-li změnit výchozí nastavení a použití PIA namísto vkládání informací o typu, rozbalte odkazy uzlu v Aplikaci Solution Explorer a vyberte Microsoft.Office.Interop.Excel nebo Microsoft.Office.Interop.Word.

  3. Pokud nevidíte Vlastnosti okna, stiskněte klávesu F4.

  4. Najít Vložit Interop typy v seznamu vlastností a změňte její hodnotu na False.Equivalently, kompilace pomocí /Reference volba kompilátoru namísto /link na příkazovém řádku.

Přidat další formátování tabulky

  1. Nahrazení dvou volání na AutoFit v DisplayInExcel s následující příkaz.

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

    Automatický formát metoda má sedm hodnoty parametrů, které jsou volitelné.Pojmenované a volitelné argumenty umožňují poskytovat žádné, některé nebo všechny jejich argumenty.V předchozím příkazu argument zadána pouze jeden z parametrů, Format.Protože Format je první parametr v seznamu parametrů není nutné zadat název parametru.Prohlášení však může být snadněji pochopíte, pokud je zahrnuta, jak ukazuje následující kód název parametru.

    // Call to AutoFormat in Visual C# 2010.
    workSheet.Range["A1", "B3"].AutoFormat(Format:
        Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
    
  2. Stiskněte kombinaci kláves CTRL + F5 zobrazíte výsledek.Jiné formáty jsou uvedeny v XlRangeAutoFormat výčtu.

  3. Porovnat prohlášení v kroku 1 s následující kód, který zobrazuje argumenty, které jsou požadovány v Visual C# 2008 nebo starší verze.

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

Příklad

Následující kód ukazuje příklad úplné.

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

Viz také

Úkoly

Jak: použití pojmenovaných a volitelné argumenty v Office programování (Příručka programování C#)

Referenční dokumentace

dynamické (C#-Reference)

Type.Missing

Koncepty

Pojmenované a volitelné argumenty (Příručka programování C#)

Další zdroje

Pomocí dynamického typu (C# program televize)