| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			проблема использования Excel через clr
			 
			
			Доброго времени суток! 
		
		
		
		
		
		
		
	Возникла проблема вызова объектов Excel, используя объекты clr. Пример кода был взят из ветки форума. Ссылка. И написан джобик (просто открываем, а затем пересохраняем файл): X++: static void test_clr_excel(Args _args) { Microsoft.Office.Interop.Excel._Application excel; Microsoft.Office.Interop.Excel.Workbooks workbooks; Microsoft.Office.Interop.Excel._Workbook workbook; System.Type type; System.Reflection.FieldInfo fieldInfo; System.Object missing; Microsoft.Office.Interop.Excel.XlFileFormat fileFormat; Microsoft.Office.Interop.Excel.XlSaveAsAccessMode saveAsAccessMode; FileName textFileName; FileName path; FileName name; FileName extention; FileName _excelFileName = "С:\\test.xls"; ; new InteropPermission(InteropKind::ClrInterop).assert(); [path, name, extention] = fileNameSplit(_excelFileName); textFileName = path + name + '.csv'; if (System.IO.File::Exists(textFileName)) System.IO.File::Delete(textFileName); type = System.Type::GetType('System.Reflection.Missing'); fieldInfo = type.GetField('Value'); missing = fieldInfo.GetValue(null); fileFormat = ClrInterop::parseClrEnum('Microsoft.Office.Interop.Excel.XlFileFormat', 'xlTextWindows'); saveAsAccessMode = ClrInterop::parseClrEnum('Microsoft.Office.Interop.Excel.XlSaveAsAccessMode', 'xlNoChange'); try { excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); workbooks = excel.get_Workbooks(); // при попытке открыть файл объект Excel просто вылетает workbook = workbooks._Open(_excelFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); workbook.SaveAs(textFileName, fileFormat, missing, missing, missing, missing, saveAsAccessMode, missing, missing, missing, missing, missing); } catch { info("catched"); } try { // также не удаётся закрыть объект workbooks.Close(); } catch { info("excel wasnt closed"); } CodeAccessPermission::revertAssert(); } Система: Win Srv 2008 R2, DAX 2009, Excel 2010 Возможно кто-то уже сталкивался с аналогичной проблемой. Возможно, что будет необходимо "подкрутить" какие-либо настройки системы.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сразу после создания экземпляра Excel в целях тестирования сделайте его видимым 
		
		
		
		
		
		
		
	X++: excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); excel.set_Visible(true); Как правило, проблема в сообщении об ошибке в Excel, которое требует нажать "Ok" для продолжения процесса открытия файла. Визуализация экземпляра Excel поможет убедится в правильности данного предположения  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добавил, но результата так и не получил. Соответственно стало: 
		
		
		
		
		
		
		
	X++: excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); excel.set_Visible(true); // отображается Excel workbooks = excel.get_Workbooks(); // при попытке открыть файл объект Excel просто вылетает workbook = workbooks._Open(_excelFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Так что происходит с Excel? Он "вылетает" или "остается висеть"? По шагам тестировать не пробовали?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Batuev Artem
			 
 
			Доброго времени суток! 
		
	Возникла проблема вызова объектов Excel, используя объекты clr. Пример кода был взят из ветки форума. [/XPP] При попытке открыть файл, Excel просто вылетает, не возвращая никакой ошибки. Тем не менее сам процесс остается висеть в менеджере задач. Система: Win Srv 2008 R2, DAX 2009, Excel 2010 Возможно кто-то уже сталкивался с аналогичной проблемой. Возможно, что будет необходимо "подкрутить" какие-либо настройки системы. Посмотрите тут Падает Ахапта-2009 при использовании .NET/CLRInterop/Word Видимо причина та же...  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вызов происходит с терминального сервера? Уже на форуме обсуждалось, что при работе с Excel через терминальный сервер, возникают проблемы с методами СОМ объектов... 
		
		
		
		
		
		
			Ошибки Word 2003 при работе в терминальном режиме 
				__________________ 
		
		
		
		
		
			http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! Последний раз редактировалось plumbum; 22.08.2011 в 16:15. Причина: ссылка на упомянутую ветку  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			да, по шагам пробовал тестировать. При вызове workbooks._Open(...) Excel вылетает (на сколько я понимаю, при вызове clr объекта происходит какая-то ошибка или исключение, но в Аксапту обратно оно (оповещение об ошибке) не попадает), но процесс (а если вызвать заранее excel.set_Visible(true), то и визуально окно Excel) остается висеть в менеджере задач.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от plumbum
			 
 
			А вызов происходит с терминального сервера? Уже на форуме обсуждалось, что при работе с Excel через терминальный сервер, возникают проблемы с методами СОМ объектов... 
		
	Ошибки Word 2003 при работе в терминальном режиме  | 
| 
	
 |