|
25.08.2010, 18:59 | #1 |
Участник
|
Иморт из Excel 2010. Как правильно закрыть Excel?
Доброго времени суток.
Столкнулся с проблемой в аксапте при работе с excel 2010, после excel.quit() приложение все равно висит в процессах. С предыдущими версиями еселя таких проблем нету. Вот пример работы с файлом excel X++: static void testImport2(Args _args) { FileName filenameOpen = @"С:\test.xls"; COM com; SysExcelApplication Excel; SysExcelWorkbooks books; InteropPermission comPermission; ; comPermission = new InteropPermission(InteropKind::ComInterop); Excel = SysExcelApplication::construct(); excel.visible( false); excel.displayAlerts(false); books = Excel.workbooks(); books.open( filenameOpen); books.close(); books = null; //com = books.comObject(); //com.close(); //com.finalize(); //com = null; excel.quit(); excel.displayAlerts(true); excel = null; CodeAccessPermission::revertAssert(); info( "End"); } Вот примеры: http://social.msdn.microsoft.com/For...f-bd17fa70f379 http://social.msdn.microsoft.com/for...8-74793F297F13 http://social.msdn.microsoft.com/For...-353a5946f151/ http://msdn.microsoft.com/ru-ru/library/ee317478.aspx Было предположение, что аксапта не корректно удаляет процесс. В качестве проверки, по представленным ссылкам был сделан примерчик на c#, консольное приложение (см. вложение) - результат тот же, с екселем 2010 процесс остается висеть, в поздних версиях процесс закрывается. При этом, стоит отметить, что в excel 2010 увеличилось настроек безопасности, особенно по открытию файлов в защищенном режиме. Есть подозрение, что проблема как-то с этим связана, хотя минимизировал в них все ограничения - не помогло, может не то и не там настраивал. Что посоветуете? Dax 2009 Ru4, KernelVersion 5.0.1500.2116, Win2008 sp2, MS Sql 2008 MS Office 2010. |
|
25.08.2010, 19:16 | #2 |
MCP
|
У меня DAX 2009 Kernel 5.0.1000.52 - процесс не висит.. попробовал несколько раз
__________________
AXIOMA |
|
25.08.2010, 19:19 | #3 |
MCP
|
Прошу прощения, протестировал на Excel 2007. 2010-го нет
__________________
AXIOMA |
|
12.10.2013, 22:30 | #4 |
Участник
|
При работе через .Net обнаружил аналогичную проблему.
Решение нашел такое: Взаимодействие с Excel через .NET (семейство классов SysExcel) |
|
13.10.2013, 00:55 | #5 |
Участник
|
Excel 2010 версия: 14.0.7106.5003 (32-разрядная), ваше тестовое приложения на C# из прикрепленного файла отработало нормально, по окончанию процесс Excel исчез, т.е. ошибка у меня не воспроизводится.
Единственное, когда я сперва описался и неправильно указал имя файла для открытия, приложение завершилось с ошибкой и процесс Excel остался висеть, но оно и понятно, обработки исключений в примере нет и до уничтожения объекта дело не дошло. |
|