Webbrowser控件中的Excel从其他文件中lockingExcel

描述
我正在加载一个Excel文件到WinForm浏览器控件对象中。 加载后,我可能需要打开其他Excel文件。 但是,当浏览器控件被加载时,它会阻止在使用双击时加载另一个工作簿。 但是,如果我开始 – >运行Excel应用程序,然后文件 – >打开文档,它会加载,我可以在Web浏览器中的工作簿和刚才打开的工作簿之间进行交换。 我使用.NET参考Microsoft.Office.Internet.Excel 14.0.0.0。

有没有反正打开文件时双击浏览器控件加载?

在WebBrowser控件中加载Excel文件的代码

protected Microsoft.Office.Interop.Excel.Application _excelApp = null; protected Workbook _workbook = null; protected Worksheet _worksheet = null; //Load the Excel file in the WebBrowser control this.webBrowser.Navigate("MyFile.xls", false); //Get the ActiveXinstance from the WebBrowser Container SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)this.webBrowser.ActiveXInstance; //Make the web browser silent so dialog boxes are not displayed wb.Silent = true; //Assign the document to an object object odocument = wb.Document; //Convert the Document to an Excel application _excelApp = (Microsoft.Office.Interop.Excel.Application)odocument.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, odocument, null); //Do not display alerts _excelApp.DisplayAlerts = false; //Assign a workbook to the Excel application. Use .Count in case there are other workbooks open in the Excel application _workbook = (Workbook)_excelApp.Workbooks[_excelApp.Workbooks.Count]; //Assign a worksheet to the workbook (Excel objects are 1-based) _worksheet = (Worksheet)_workbook.Worksheets[1]; 

我已经尝试启动另一个Excel进程后,加载webbrowser控件,但也有同样的问题:
System.Diagnostics.Process.Start(@"C:\Program Files\Microsoft Office\OFFICE11\Excel.exe");

我也尝试创build另一个Excel对象,但.NET引用似乎将两者合并为一个过程: oXL=new Microsoft.Office.Interop.Excel.Application

我注意到这个VS2008的问题被查看了很多,但没有解决: https : //stackoverflow.com/questions/2867744/webbrowser-locks-first-excel-instance

我find了一个解决方法。 您必须使用Excel实例的IgnoreRemoteRequests属性。 但请记住 – 这个设置是永久的,这就是为什么你必须在closures应用程序之前将它的值设置为False 。 一种方法,例如:

  public static void SetIgnoreRemoteRequests(WebBrowser bro, bool value) { if (bro.Document is Workbook) { ((Workbook)bro.Document).Application.IgnoreRemoteRequests = value; } } 

至于我,我在OnLoadCompleted设置为True ,在Navigating OnLoadCompleted设置为False (因为我的许可适用于许多其他格式)以及Disposing WebBrowser。