我们正在使用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秒。包执行失败。这一步 失败。
答案 0 :(得分:0)
调用目标抛出了异常
这个例外是通用的,我认为你应该在脚本代码中添加一些错误处理来获得真正的异常。
但我认为这是一个参考问题,sql代理可能无法访问microsoft.interop.excel.dll
路径,或者应该在GAC中重新安装此程序集。
有一些类似的文章包含更多细节和解决方法: