Vazby pro automatizaci servery Office s Visual C# .NET

Překlady článku Překlady článku
ID článku: 302902 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Při automatizaci aplikace, jako je například Microsoft Office aplikace, volání na vlastnosti a metody Office objekty aplikace musí být připojen nějakým způsobem tyto objekty. Proces připojování vlastnost a volání metody objektů implementovat tyto vlastnosti a metody běžně nazývá vazby. V jazyce Visual C# dva typy vazby, které jsou k dispozici jsou brzy vazby a pozdní vazba. Typ vazby vyberete mohou ovlivnit mnoho aspektů programu včetně výkon, pružnost a maintainability.

Tento článek vysvětluje a porovná předčasně a pozdě dokončené vazby pro klienty Visual C# automatizace a obsahuje ukázky kódu, které ukazují, oba typy vazby.

Prvotní vazby

S vazbou brzy Visual C# používá typ informací, které jsou k dispozici o aplikace Office dotyčný vytvořit vazbu na metody nebo vlastnosti potřebuje používat. Kompilátor může provádět typ a syntaxe zkontroluje zajistit metodu nebo vlastnost jsou předány správné číslo a typ parametry a, vrácená hodnota bude očekávaného typu. Protože v době spuštění volání na vlastnost nebo metodu je požadováno méně práce, nejdříve možné vazby je někdy rychlejší; Přestože může být rychlejší brzy vazeb, výkon rozdíly při porovnání pozdní vazba jsou však často zanedbatelný.

Časná vazba nemá dílčí Nevýhodou jej lze zavádět verze možné problémy s kompatibilitou. Předpokládejme například, že zavádí novou metodu nebo vlastnost, která byla k dispozici v aplikaci Excel 2000 nebo provede Změna existující vlastnost nebo metoda Automation server, jako je například Microsoft Excel 2002. Tyto změny mohou měnit binární rozložení objektu a způsobit problémy s aplikací Visual C#, která používá typ informace aplikaci Excel 2002 k automatizaci aplikace Excel 2000. Chcete-li se vyhnout tomuto problému s vazbou brzy, je obecně doporučeno použít informace o typu pro nejstarší verzi aplikace Office, který si přejete podporu při vývoji a testování klienta automatizace.

Následující kroky ukazují, jak sestavit klienta automatizace, který používá brzy vazby. Všimněte si, že jako ilustrují kroky časná vazba vyžaduje, abyste odkazovat knihovnu typů pro klienta automatizace.

Vytvoření klienta automatizace, který používá brzy vazby

  1. Spusťte aplikaci Visual Studio .NET. V nabídce soubor klepněte na příkaz Nový a klepněte na příkaz projekt. Vyberte typy Visual C# projekty Aplikace Windows. Jako výchozí je vytvořen formulář Form1.
  2. Přidat odkaz Objektové knihovny Microsoft Excel. Postupujte takto:
    1. V nabídce projekt klepněte na tlačítko Přidat odkaz.
    2. Na kartě COM najít Uzavřený Object Library a klepněte na tlačítko Vybrat.

      Poznámka: Sada Office 2003 zahrnuje primární sestavení InterOp (PIA). Office XP nezahrnuje PIA, ale mohou být staženy. Další informace o sestaveních PIA sady Office XP klepněte na následující číslo článku databáze Microsoft Knowledge Base:
      328912Primární sestavení InterOp (PIA) sady Office XP jsou k dispozici ke stažení
    3. Klepněte na tlačítko OK v dialogovém okně Přidat odkazy přijmout vaše výběry. Pokud se zobrazí výzva ke generování obálky pro vybrané knihovny klepněte na tlačítko Ano.
  3. V nabídce Zobrazit vyberte panel zobrazení panelu a přidání tlačítka Form1.
  4. Poklepejte na Button1. Zobrazí se okno s kódem pro formulář.
  5. V okně kódu nahraďte následující kód
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    s:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	Excel.Application objApp;
    	Excel._Workbook objBook;
    	Excel.Workbooks objBooks;
    	Excel.Sheets objSheets;
    	Excel._Worksheet objSheet;
    	Excel.Range range;
    
    	try
    	{
    		// Instantiate Excel and start a new workbook.
    		objApp = new Excel.Application();
    		objBooks = objApp.Workbooks;
    		objBook = objBooks.Add( Missing.Value );
    		objSheets = objBook.Worksheets;
    		objSheet = (Excel._Worksheet)objSheets.get_Item(1);
    
    		range = objSheet.get_Range("A1", Missing.Value);
    
    		range.set_Value(Missing.Value, "Hello, World!" );
    
    		//Return control of Excel to the user.
    		objApp.Visible = true;
    		objApp.UserControl = true;
    	}
    	catch( Exception theException ) 
    	{
    		String errorMessage;
    		errorMessage = "Error: ";
    		errorMessage = String.Concat( errorMessage, theException.Message );
    		errorMessage = String.Concat( errorMessage, " Line: " );
    		errorMessage = String.Concat( errorMessage, theException.Source );
    
    		MessageBox.Show( errorMessage, "Error" );
    	}
    }  
    					
  6. Přesun na začátek kódu. Přidejte následující řádek na konec seznamu pomocí direktivy:
    using System.Reflection;
    using Excel = Microsoft.Office.Interop.Excel;
    					

Pozdní vazba

Rozdíl k prvotní vazby pozdní vazba čeká, dokud běhu svázat vlastnost a metodu volá jejich objekty. Chcete-li to provést, cílový objekt musí implementovat speciální rozhraní COM: IDispatch. Metoda IDispatch::GetIDsOfNames umožňuje Visual C# k interrogate objektu o jaké metody a vlastnosti podporuje a metoda IDispatch::Invoke pak umožňuje Visual C# volat tyto metody a vlastnosti. Tímto způsobem pozdní vazba má výhod odstraněním některých verze závislostí, které jsou systému brzy vazby. Má však Nevýhodou odebrání kompilaci kontroly integrity kód automatizace, stejně jako neposkytuje IntelliSense funkce poskytující clues opravit volání metody a vlastnosti.

Použijte pozdní vazba v jazyce Visual C#, použijte metodu System.Type.InvokeMember. Tato metoda volá IDispatch::GetIDsOfNames a IDispatch::Invoke svázat metody a vlastnosti Automation server.

Vytvoření klienta automatizace, který používá pozdní vazba

  1. Spusťte aplikaci Visual Studio .NET. V nabídce soubor klepněte na příkaz Nový a klepněte na příkaz projekt. Vyberte typy Visual C# projekty Aplikace Windows. Jako výchozí je vytvořen formulář Form1.
  2. V nabídce Zobrazit vyberte panel zobrazení panelu a přidání tlačítka Form1.
  3. Poklepejte na Button1. Zobrazí se okno s kódem pro formulář.
  4. V okně kódu nahraďte následující kód
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    						
    s:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	object objApp_Late;
    	object objBook_Late;
    	object objBooks_Late;
    	object objSheets_Late;
    	object objSheet_Late;
    	object objRange_Late;
    	object[] Parameters;
    
    	try
    	{
    		// Get the class type and instantiate Excel.
    		Type objClassType; 
    		objClassType = Type.GetTypeFromProgID("Excel.Application"); 
    		objApp_Late = Activator.CreateInstance(objClassType);
    
    		//Get the workbooks collection.
    		objBooks_Late = objApp_Late.GetType().InvokeMember( "Workbooks", 
    		BindingFlags.GetProperty, null, objApp_Late, null );
    
    		//Add a new workbook.
    		objBook_Late = objBooks_Late.GetType().InvokeMember( "Add", 
    			BindingFlags.InvokeMethod, null, objBooks_Late, null );
    
    		//Get the worksheets collection.
    		objSheets_Late = objBook_Late.GetType().InvokeMember( "Worksheets",
    			BindingFlags.GetProperty, null, objBook_Late, null );
    
    		//Get the first worksheet.
    		Parameters = new Object[1];
    		Parameters[0] = 1;
    		objSheet_Late = objSheets_Late.GetType().InvokeMember( "Item", 
    			BindingFlags.GetProperty, null, objSheets_Late, Parameters );
    
    		//Get a range object that contains cell A1.
    		Parameters = new Object[2];
    		Parameters[0] = "A1";
    		Parameters[1] = Missing.Value;
    		objRange_Late = objSheet_Late.GetType().InvokeMember( "Range",
    			BindingFlags.GetProperty, null, objSheet_Late, Parameters );
    
    		//Write "Hello, World!" in cell A1.
    		Parameters = new Object[1];
    		Parameters[0] = "Hello, World!";
    		objRange_Late.GetType().InvokeMember( "Value", BindingFlags.SetProperty, 
    			null, objRange_Late, Parameters );
    
    		//Return control of Excel to the user.
    		Parameters = new Object[1];
    		Parameters[0] = true;
    		objApp_Late.GetType().InvokeMember( "Visible", BindingFlags.SetProperty,
    			null, objApp_Late, Parameters );
    		objApp_Late.GetType().InvokeMember( "UserControl", BindingFlags.SetProperty,
    			null, objApp_Late, Parameters );
    	}
    	catch( Exception theException ) 
    	{
    		String errorMessage;
    		errorMessage = "Error: ";
    		errorMessage = String.Concat( errorMessage, theException.Message );
    		errorMessage = String.Concat( errorMessage, " Line: " );
    		errorMessage = String.Concat( errorMessage, theException.Source );
    
    		MessageBox.Show( errorMessage, "Error" );
    	}
    }
    					
  5. Přesun na začátek kódu. Přidejte následující řádek na konec seznamu pomocí direktivy:
    using System.Reflection; 
    					

Odkazy

Další informace naleznete na následujících webech služby MSDN (Microsoft Developer Network):
Microsoft Office Development s Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Další informace o vazbu klepněte na následující čísla následujících článcích databáze Microsoft Knowledge Base:
245115V automatizaci pomocí brzy vazby a pozdní vazba
244167Psaní klientům automatizace více verzí systému Office
247579Použít k automatizaci aplikace Office je to možné DISPID vazby

Vlastnosti

ID článku: 302902 - Poslední aktualizace: 27. března 2007 - Revize: 7.4
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Klíčová slova: 
kbmt kbpia kbautomation kbhowtomaster KB302902 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:302902

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com