Добрый день, Коллеги.
Есть C# блок со следующим кодом, который конвертирует бинарный excel в обычный:
string xlsb = Dts.Variables["$Project::FilePath2"].Value.ToString();
string xlsx = Dts.Variables["$Project::FilePath"].Value.ToString();
// init excel
Microsoft.Office.Interop.Excel.Application excelApplication = new Microsoft.Office.Interop.Excel.Application();
excelApplication.DisplayAlerts = false;
// open book in any format
Workbook workbook = excelApplication.Workbooks.Open(xlsb, XlUpdateLinks.xlUpdateLinksNever, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// save in XlFileFormat.xlWorkbookDefault format which is XLSX
workbook.SaveAs(xlsx, XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// close workbook
workbook.Close(false, Type.Missing, Type.Missing);
//excelApplication.DisplayAlerts = true;
// shutdown excel
excelApplication.Quit();
Если запускать руками в VS, то всё работает. Если сделать deploy и поставить на расписание - не работает, ругается:
Convert xlsb -> xlsx:Error: Exception has been thrown by the target of an invocation.
При этом права к папке есть, параметры прописаны, excel установлен 2016, 64-битный, под пользователем от которого всё работает на сервер заходили, excel запускали, пробовал запускать 32-битном режиме - всё безрезультатно. И validation и execute выполняются (правда при execute файл не создается, но с ошибкой не падает). В логах на сервере информации об ошибках нет.
Буду рад любой идеи и даже "костылю". Заранее спасибо.