C#.NET綁定Office淺析
早期C#.NET綁定Office
采用早期綁定時(shí),Visual C# 使用有關(guān)所涉及C#.NET綁定Office應(yīng)用程序的可用類型信息直接綁定到它需要使用的方法或?qū)傩?。編譯器可以執(zhí)行類型和語法檢查,以確保傳遞到方法或?qū)傩缘膮?shù)的數(shù)量和類型正確無誤,并且返回的值是所期望的類型。由于早期綁定在運(yùn)行時(shí)調(diào)用屬性或方法所需的工作量較小,因此有時(shí)速度較快。然而,雖然早期綁定可能速度較快,但與晚期綁定之間的性能差異通常不大?!?/P>
早期綁定確實(shí)有這樣一個(gè)小缺點(diǎn):可能會(huì)帶來版本兼容性問題。例如,假定諸如 Microsoft Excel 2002 之類的自動(dòng)化服務(wù)器引入了 Excel 2000 中沒有的新方法或?qū)傩裕蛘吒牧爽F(xiàn)有的屬性或方法。這些更改可能會(huì)改變對(duì)象的二進(jìn)制布局,并導(dǎo)致使用 Excel 2002 類型信息實(shí)現(xiàn) Excel 2000 自動(dòng)化的 Visual C# 應(yīng)用程序出現(xiàn)問題。為了避免早期綁定發(fā)生這樣的問題,通常建議您在開發(fā)和測(cè)試自動(dòng)化客戶端時(shí),使用您希望支持的最低版本的 Office 應(yīng)用程序的類型信息。
下列步驟說明了如何創(chuàng)建使用早期綁定的自動(dòng)化客戶端。請(qǐng)注意,正如這些步驟所說明的那樣,早期綁定要求您引用自動(dòng)化客戶端的類型庫。
創(chuàng)建使用早期綁定的自動(dòng)化客戶端
啟動(dòng) Microsoft Visual Studio .NET。在文件菜單上,單擊新建,然后單擊項(xiàng)目。從 Visual C# 項(xiàng)目類型中選擇 Windows 應(yīng)用程序。默認(rèn)情況下會(huì)創(chuàng)建 Form1。
添加對(duì) Microsoft Excel 對(duì)象庫的引用。為此,請(qǐng)按照下列步驟操作:
◆在項(xiàng)目菜單上,單擊添加引用。
◆在 COM 選項(xiàng)卡上,找到 Microsoft Excel 對(duì)象庫并單擊選擇。
注意:Office 2003 包含主 Interop 程序集 (PIA)。Office XP 不包含 PIA,但您可以下載 PIA。 有關(guān)C#.NET綁定Office的其他信息,請(qǐng)單擊下面的文章編號(hào),以查看 Microsoft 知識(shí)庫中相應(yīng)的文章:
328912 INFO:Microsoft Office XP PIA 可供下載
◆在添加引用對(duì)話框中單擊確定以接受您的選擇。如果系統(tǒng)提示您為選定的庫生成包裝,請(qǐng)單擊是。
◆在視圖菜單上,選擇工具箱以顯示工具箱,然后向 Form1 添加一個(gè)按鈕。
◆雙擊 Button1。將出現(xiàn)該窗體的代碼窗口。
◆在代碼窗口中,將以下代碼
- privatevoidbutton1_Click(objectsender,System.EventArgse){
- }
- 替換為:privatevoidbutton1_Click(objectsender,System.EventArgse)
- {
- Excel.ApplicationobjApp;
- Excel._WorkbookobjBook;
- Excel.WorkbooksobjBooks;
- Excel.SheetsobjSheets;
- Excel._WorksheetobjSheet;
- Excel.Rangerange;
- try
- {
- //InstantiateExcelandstartanewworkbook.
- objApp=newExcel.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!");
- //ReturncontrolofExceltotheuser.
- objApp.Visible=true;
- objApp.UserControl=true;
- }
- catch(ExceptiontheException)
- {
- StringerrorMessage;
- errorMessage="Error:";
- errorMessage=String.Concat(errorMessage,theException.Message);
- errorMessage=String.Concat(errorMessage,"Line:");
- errorMessage=String.Concat(errorMessage,theException.Source);
- MessageBox.Show(errorMessage,"Error");
- }
- }
【編輯推薦】