Excel в Webbrowser Control блокирует Excel из других файлов - PullRequest
2 голосов
/ 05 апреля 2011

Описание
Я загружаю файл Excel в объект управления веб-браузера WinForm.После загрузки может потребоваться открыть другие файлы Excel.Но когда загружен элемент управления веб-браузера, он предотвращает загрузку другой книги при двойном щелчке.Однако, если я запускаю-> Запустить приложение Excel, затем Файл-> Открыть документ, он загружается, и я могу обмениваться между книгой в веб-браузере и книгой, которую я только что открыл.Я использую ссылку .NET Microsoft.Office.Internet.Excel 14.0.0.0.

Есть ли способ открыть файл двойным щелчком, когда загружен элемент управления веб-браузера?

Код для загрузки файла 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 после загрузки элемента управления веб-браузера, но возникла та же проблема:
System.Diagnostics.Process.Start(@"C:\Program Files\Microsoft Office\OFFICE11\Excel.exe");

Я также попытался создать другой объект Excelно ссылка .NET, кажется, объединяет оба в один процесс: oXL=new Microsoft.Office.Interop.Excel.Application

Я заметил, что эта проблема VS2008 была рассмотрена много, но не была решена: https://stackoverflow.com/questions/2867744/webbrowser-locks-first-excel-instance

1 Ответ

0 голосов
/ 21 марта 2013

Я нашел обходной путь.Вы должны использовать свойство IgnoreRemoteRequests экземпляра Excel.Но помните - этот параметр является постоянным, поэтому вы должны установить его значение обратно False перед закрытием приложения.Метод, например:

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

Что касается меня, я устанавливаю значение True в OnLoadCompleted и False в Navigating (потому что мое приложение работает со многими другимиформатов) и об утилизации WebBrowser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...