ID Artikel: 302902 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

Mengikat untuk server otomatisasi kantor dengan Visual C#.NET

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Ketika Anda mengotomatisasi aplikasi seperti Microsoft Office aplikasi, panggilan untuk properti dan metode dari kantor objek aplikasi harus terhubung dalam beberapa cara untuk objek tersebut. The proses menghubungkan panggilan properti dan metode obyek-obyek yang menerapkan properti dan metode yang disebut mengikat. Dalam Visual C#, dua jenis mengikat yang tersedia adalah ikatan dan ikatan. Jenis mengikat Anda memilih dapat mempengaruhi banyak aspek dari Anda program, termasuk kinerja, fleksibilitas, dan Kemampu-rawatan.

Artikel ini menjelaskan dan membandingkan awal dan akhir mengikat untuk Visual C# Otomatisasi klien dan menyediakan kode contoh yang menunjukkan kedua jenis mengikat.

Ikatan

Dengan ikatan lama, Visual C# menggunakan jenis informasi yang tersedia tentang aplikasi Office dimaksud untuk mengikat langsung ke metode atau properti yang dibutuhkan untuk menggunakan. Kompilator dapat melakukan jenis dan sintaks cek untuk memastikan bahwa benar jumlah dan jenis parameter berlalu untuk metode atau properti, dan bahwa nilai kembali akan diharapkan jenis. Karena kurang kerja diperlukan pada jangka waktu untuk membuat panggilan ke properti atau metode, ikatan ini kadang-kadang lebih cepat; Namun, meskipun awal mengikat Mei lebih cepat, perbedaan kinerja bila dibandingkan dengan ikatan yang sering diabaikan.

Awal mengikat memiliki kecil yang merugikan itu dapat memperkenalkan versi mungkin masalah kompatibilitas. Sebagai contoh, misalkan server Otomatisasi seperti Microsoft Excel 2002 memperkenalkan metode baru atau properti yang tidak tersedia di Excel 2000, atau membuat perubahan untuk yang sudah ada properti atau metode. Perubahan ini dapat mengubah tata letak biner objek dan menimbulkan masalah dengan Visual C# aplikasi yang menggunakan jenis Excel 2002 informasi untuk mengotomatisasi Excel 2000. Untuk menghindari masalah ini dengan ikatan lama, biasanya dianjurkan bahwa Anda menggunakan tipe informasi untuk awal Versi aplikasi Office yang ingin Anda mendukung ketika Anda mengembangkan dan menguji klien otomasi Anda.

Langkah-langkah berikut menunjukkan cara membangun sebuah klien otomasi yang menggunakan ikatan lama. Perhatikan bahwa, sebagai langkah-langkah menggambarkan, awal mengikat mengharuskan Anda untuk referensi Perpustakaan jenis untuk Klien otomasi.

Membuat klien otomasi yang menggunakan ikatan

  1. Mulai Microsoft Visual Studio.NET. Pada Berkas menu, klik Baru kemudian klik Project. Pilih Aplikasi Windows dari jenis Visual C# proyek. Form1 dibuat oleh default.
  2. Menambahkan referensi ke Perpustakaan objek Microsoft Excel. Untuk melakukannya, ikuti langkah-langkah berikut:
    1. Pada Project menu, klik Menambahkan referensi.
    2. Pada COM tab, CariMicrosoft Excel Perpustakaan objek dan klik Pilih.

      Catatan Office 2003 mencakup Interop utama Majelis (PIAs). Office XP tidak termasuk PIAs, tetapi mereka dapat di-download. Untuk informasi tambahan tentang Office XP PIAs, klik sejumlah artikel berikut untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
      328912  (http://support.microsoft.com/kb/328912/ ) Microsoft Office XP utama interop Majelis (PIAs) tersedia untuk di-download
    3. Klik Oke dalam Menambahkan referensi kotak dialog untuk menerima pilihan Anda. Jika Anda menerima prompt untuk menghasilkan pembungkus untuk perpustakaan yang Anda pilih, klik Ya.
  3. Pada Lihat menu, pilih Toolbox untuk menampilkan Toolbox, dan menambahkan tombol ke Form1.
  4. Klik dua kali Button1. Jendela kode untuk bentuk muncul.
  5. Dalam jendela kode, mengganti kode berikut
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    dengan:
    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. Gulir ke atas jendela kode. Tambahkan berikut garis akhir daftar menggunakan Petunjuk:
    using System.Reflection;
    using Excel = Microsoft.Office.Interop.Excel;
    					

Ikatan

Berbeda dengan ikatan lama, terlambat mengikat menunggu sampai jangka waktu untuk mengikat properti dan metode panggilan ke objek mereka. Untuk melakukan ini, target objek harus mengimplementasikan antarmuka COM khusus: IDispatch. The IDispatch::GetIDsOfNames metode memungkinkan Visual C# menginterogasi objek tentang apa metode dan properti yang mendukung dan IDispatch::Invoke metode kemudian memungkinkan Visual C# untuk memanggil metode-metode dan properti. Ikatan dalam mode ini memiliki keuntungan menghapus beberapa Versi dependensi yang melekat dengan ikatan lama. Namun, ia memiliki kerugian dari menghilangkan waktu kompilasi pemeriksaan pada integritas otomatisasi kode, serta tidak menyediakan Intellisense fitur yang dapat memberikan petunjuk untuk memperbaiki panggilan ke metode dan properti.

Untuk menggunakan terlambat mengikat dalam Visual C#, menggunakan System.type.InvokeMember metode. Metode ini panggilan IDispatch::GetIDsOfNames dan IDispatch::Invoke untuk mengikat untuk server Otomatisasi metode dan properti.

Membuat klien otomasi yang menggunakan ikatan terbaru

  1. Mulai Microsoft Visual Studio.NET. Pada Berkas menu, klik Baru kemudian klik Project. Pilih Aplikasi Windows dari jenis Visual C# proyek. Form1 dibuat oleh default.
  2. Pada Lihat menu, pilih Toolbox untuk menampilkan Toolbox, dan menambahkan tombol ke Form1.
  3. Klik dua kali Button1. Jendela kode untuk bentuk muncul.
  4. Dalam jendela kode, mengganti kode berikut
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    						
    dengan:
    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. Gulir ke atas jendela kode. Tambahkan berikut garis akhir daftar menggunakan Petunjuk:
    using System.Reflection; 
    					

REFERENSI

Untuk informasi lebih lanjut, kunjungi Website Microsoft berikut Situs Web Developer Network (MSDN):
Microsoft Office Development with Visual Studio
.aspx http://msdn2.Microsoft.com/en-us/library/aa188489 (office.10) (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)
Untuk informasi tambahan tentang mengikat, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
245115  (http://support.microsoft.com/kb/245115/ ) Menggunakan ikatan dan ikatan dalam otomatisasi
244167  (http://support.microsoft.com/kb/244167/ ) Klien otomasi menulis untuk beberapa versi Office
247579  (http://support.microsoft.com/kb/247579/ ) Menggunakan DISPID mengikat untuk mengotomatisasi Office aplikasi bila memungkinkan

Berlaku bagi:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002
Kata kunci: 
kbpia kbautomation kbhowtomaster kbmt KB302902 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:302902  (http://support.microsoft.com/kb/302902/en-us/ )