Этот вопрос задан другими людьми несколько лет назад, но пока нет ответов (https://go4answers.webhost4life.com/Example/excel-web-browser-control-locks-other-206723.aspx), у нас есть аналогичная проблема и нам нужно решение, поэтому я вставляю здесь. Обратите внимание, что мы используем System.Windows.Forms.WebBrowser, это отличается от его вопроса:Откройте несколько файлов excel в WebBrowser, только последний активируется
background: Чтобы автоматизировать и внедрять Excel в приложении формы Windows, я использовал элемент управления webBrowser.
Я могу перейти в файл Excel без problem.To Navigate я использую
System.Windows.Forms.WebBrowser WebBrowserExcel; this.WebBrowserExcel.Navigate (имя файла, false);
После перехода к файлу Excel я запрашиваю текущую таблицу объектов для прикрепления к рабочей книге, а затем манипулирую ячейками в книге.
public Workbook GetActiveWorkbook(string xlfile) {
IRunningObjectTable prot=null;
IEnumMoniker pmonkenum=null;
try {
//return m_Workbook;
IntPtr pfetched = IntPtr.Zero;
// Query the running object table (ROT)
if (GetRunningObjectTable(0, out prot) != 0 || prot == null) return null;
prot.EnumRunning(out pmonkenum);
pmonkenum.Reset();
IMoniker[] monikers = new IMoniker[1];
while (pmonkenum.Next(1, monikers, pfetched) == 0)
{
IBindCtx pctx; string filepathname;
CreateBindCtx(0, out pctx);
// Get the name of the file
monikers[0].GetDisplayName(pctx, null, out filepathname);
// Clean up
Marshal.ReleaseComObject(pctx);
// Search for the workbook
if (filepathname.IndexOf(xlfile) != -1)
{
object roval;
// Get a handle on the workbook
prot.GetObject(monikers[0], out roval);
return roval as Workbook;
}
}
} catch {
return null;
} finally {
// Clean up
if(prot!=null) Marshal.ReleaseComObject(prot);
if(pmonkenum!=null) Marshal.ReleaseComObject(pmonkenum);
}
return null;
}
код работает отлично, и я могу работать с книгой Excel ПОКА никакая другая книга не открыта в системе (другой рабочей книги открывается двойным щелчком по файлу в локальной системе).
Ниже сценарий:
1) Я открыл книгу из проводника, дважды щелкнув по нему. Назовем это Excel A. Это запустило процесс EXCEL.EXE. 2) Я перешел к другой книге Excel из своего веб-браузера Windows Form. Назовем это Excel B. Excel B открывается в Form.It использует уже существующий EXCEL.EXE, запущенный на шаге 1. 3) Теперь, если я попытаюсь отредактировать Excel A (открыт в шаге 1). Это не позволяет мне. Фокус всегда присутствует в Excel B (перемещается на шаге 2). Я не могу редактировать ячейки, выбрать текст или даже закрыть Excel A.
Пожалуйста, сообщите мне о любых решениях для его решения.
Что случилось с использованием Excel Interop? Зачем вставлять веб-браузер? –
Существует требование, чтобы при щелчке пользователем чего-то нам нужно получить информацию ячейки excel и сделать что-то в этом инструменте. – user3004921
Итак? Что случилось с использованием Excel Interop? –