Предлагаю попробовать переписать методы заменив вызовы COM на CLR.
Пример кода создающий csv файл:
X++:
protected FileName excel2csv(FileName _excelFileName)
{
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;
;
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');
excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
workbooks = excel.get_Workbooks();
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);
workbook.Close(false, _excelFileName, null);
CodeAccessPermission::revertAssert();
return textFileName;
}