2012-04-01 3 views
1

Почему это вызывает появление excel для открытия?Почему openfiledialog вызывает excel для добавления в процессы диспетчера задач?

 OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. 
     if (result == DialogResult.OK) // Test result. 
     { 
      //EXCEL.EXE *32 is now showing in the task manager! 

я выборе XLSX файл из openfiledialog и, как показано выше, я вижу процесс в диспетчере задач.

Может кто-нибудь скажет мне, как это возможно?

+0

Если все остальное не работает, одноэтапный код! Он должен быстро показать, какая строка вызывает проблему. Кроме того, любые объекты, возвращаемые Excel, также должны быть выпущены через ReleaseComObject по завершении, например. xlWorkBook, xlWorkSheet, xlWorkSheet.get_Range, EmailList.Cells. Мисс один из Excel останется открытым. – Will

+0

пс. В стороне, ваш код очистки должен быть в конечном блоке, чтобы гарантировать, что он будет вызван независимо от успеха или исключения. – Will

+0

большое спасибо. можете ли вы увидеть отредактированный вопрос? Думаю, я нашел причину, почему –

ответ

1

Если Excel уже открыт, вы должны попытаться получить этот экземпляр вместо создания нового.

using System.Runtime.InteropServices; 

... 

Excel.Application xl = null; 
try { 
    // Try to get an existing instance 
    xl = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
} catch (COMException ex) { 
    // Excel was not open. Open a new instance 
    xl = new Excel.ApplicationClass(); 
} 
+0

большое спасибо за помощь. мое приложение открывает excel, и оно должно закрыть его. что вы подразумеваете под "excel уже открыты?" –

+0

????????????????/ –

+0

Возможно, приложение Excel уже открыто - либо видимым, либо невидимым. В последнем случае вы увидите его в диспетчере задач. –

 Смежные вопросы

  • Нет связанных вопросов^_^