2012-04-25 43 views
3

我在.NET應用程序創建的Microsoft Excel的一個實例(WPF如果它事項)和我在裏面嵌入這樣的:編程方式創建Excel實例並加載所有加載項

 var excelType = Type.GetTypeFromProgID("Excel.Application"); 
     var excelObj = Activator.CreateInstance(excelType); 
     excelType.InvokeMember("Visible", BindingFlags.SetProperty, null, excelObj, new object[] { true }, ComCulture); 
     var excelHwnd = new IntPtr((int)excelType.InvokeMember("Hwnd", BindingFlags.GetProperty, null, excelObj, new object[0], ComCulture)); 
     var managedWindowHwnd = new WindowInteropHelper(Application.Current.MainWindow).Handle; 
     SetParent(excelHwnd, managedWindowHwnd); 
     MoveWindow(excelHwnd, 0, 0, Convert.ToInt32(Width), Convert.ToInt32(Height), true); 

所有作品但Excel不會加載安裝的加載項。如果我通過開始菜單運行Excel,它會加載加載項。

我想我需要指定一些參數到Excel來啓用加載項加載。但我不知道什麼/如何...

+0

爲什麼你不開始一個過程? – chris6523 2012-04-25 09:13:04

+0

那麼我們有一個大型的應用程序,可以像這樣激活和嵌入Excel,並且很難改變事物。啓動一個進程有助於加載插件,但即使如此,一些插件也會在某些命令上崩潰。我希望sqitch或一些啓動選項,我可以強制到Excel .. – 2012-04-25 09:32:18

回答

0

您可以使用interop手動執行此操作,您可以參考我的帖子Get the excel cell address from a UDF來獲取Excel的Application對象的句柄。一旦你有了應用程序,你可以通過循環遍歷application.AddIns和application.ComAddIns併爲每個項目設置已安裝/連接屬性爲true來手動啓用插件