Доброго времени суток!
Возникла проблема вызова объектов 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();
}
При попытке открыть файл, Excel просто вылетает, не возвращая никакой ошибки. Тем не менее сам процесс остается висеть в менеджере задач.
Система: Win Srv 2008 R2, DAX 2009, Excel 2010
Возможно кто-то уже сталкивался с аналогичной проблемой. Возможно, что будет необходимо "подкрутить" какие-либо настройки системы.