SSIS将自定义标题添加到Excel文件

时间:2018-05-16 20:21:59

标签: excel ssis excel-interop sql-server-agent windows-security

我们正在使用SSIS将数据转储到excel文件中。需要将自定义标题添加到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安全修补程序更新后暂停工作。

在Visual Studio中运行正常,但在SQL Server代理中出错。

SQL Server代理的错误

  

以用户身份执行:Office \ Administrator。 Microsoft(R)SQL Server   对于64位版权,执行Package Utility版本14.0.1000.169   (C)2017年微软。版权所有。开始于:3:01:22 PM   错误:2018-05-16 15:01:25.64代码:0x00000001来源:脚本   任务描述:目标抛出异常   调用。结束错误DTExec:返回包执行   DTSER_FAILURE(1)。开始时间:下午3:01:22完成:下午3:01:25   经过:2.687秒。包执行失败。这一步   失败。

1 个答案:

答案 0 :(得分:0)

  

调用目标抛出了异常

这个例外是通用的,我认为你应该在脚本代码中添加一些错误处理来获得真正的异常。

但我认为这是一个参考问题,sql代理可能无法访问microsoft.interop.excel.dll路径,或者应该在GAC中重新安装此程序集。

有一些类似的文章包含更多细节和解决方法: