SSIS добавляет пользовательский заголовок в файл Excel

Мы сбрасываем данные в файл excel с помощью SSIS. Необходимо добавить пользовательский заголовок в файл Excel.

Приведенный ниже код работал много лет. (на разных Windows (Win7,Win10) и разных версиях офиса (Office2007 и Office2013).

        string ExcelTarget = Dts.Variables["ExcelTarget"].Value.ToString();
        int ReportDayDiff = (int)Dts.Variables["ReportDayDiff"].Value;
        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(ExcelTarget, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Sheets["Orders"];
        xlWorkSheet.PageSetup.PrintTitleRows = "$1:$1";
        xlWorkBook.Save();
        xlWorkSheet.PageSetup.CenterHeader = "&B&\"Calibri\"&22 SellerCloud Orders - " + DateTime.Now.AddDays(ReportDayDiff).ToString("MM/dd/yyy");

        xlWorkBook.Save();
        xlWorkBook.Close(true, Type.Missing, Type.Missing); // first parameter is SaveChanges
        xlApp.Quit();
        Dts.TaskResult = (int)ScriptResults.Success;

Перестал работать после недавнего обновления Windows Security Patch.

В Visual Studio работает нормально, но в агенте SQL Server возникают ошибки.

Ошибка от агента SQL Server

Выполняется от имени пользователя: Офис\Администратор. Microsoft (R) SQL Server Execute Package Utility версии 14.0.1000.169 для 64-разрядной версии Copyright (C) Microsoft, 2017 г. Все права защищены. Начато: 15:01:22 Ошибка: 2018-05-16 15:01:25.64 Код: 0x00000001 Источник: Сценарий Описание задачи: Целью вызова было создано исключение. End Error DTExec: выполнение пакета вернуло DTSER_FAILURE (1). Начало: 15:01:22 Окончание: 15:01:25 Прошло: 2,687 секунды. Не удалось выполнить пакет. Шаг не удался.


person monsey11    schedule 16.05.2018    source источник


Ответы (1)


Исключение было выброшено целью вызова

Это исключение является общим, я думаю, вам следует добавить некоторую обработку ошибок в код скрипта, чтобы получить настоящее исключение.

Но я думаю, что это справочная проблема, агент sql не может получить доступ к пути microsoft.interop.excel.dll, или эту сборку следует переустановить в GAC.

Есть аналогичная статья, которая содержит более подробную информацию и обходные пути:

person Hadi    schedule 17.05.2018