我们使用SSIS将数据转储到excel文件中。需要将自定义标头添加到 Excel 文件。
下面的代码工作了很多年。(在不同的Windows(Win7,Win10)和不同的Office版本(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 Agent中出错。
来自 SQL 服务器代理的错误
以用户身份执行:办公室\管理员。Microsoft (R) SQL Server 执行 64 位版权的包实用程序版本 14.0.1000.169 (C) 2017年Microsoft。保留所有权利。 已开始: 15:01:22 错误:2018-05-16 15:01:25.64 代码:0x00000001 来源:脚本 任务描述:目标引发异常 调用。 结束错误 DTExec:返回包执行 DTSER_FAILURE(1). 开始: 15:01:22 完成: 15:01:25 已用:2.687 秒。 包执行失败。 步骤 失败。
调用目标已引发异常
这个异常是通用的,我认为你应该在脚本代码中添加一些错误处理以获得真正的异常。
但我认为这是一个参考问题,sql 代理可能无法访问microsoft.interop.excel.dll
路径,或者应该在 GAC 中重新安装此程序集。
有一些类似的文章包含更多详细信息和解决方法:
- 调用目标引发异常 - SSIS 脚本任务错误
- 脚本任务错误:调用目标引发异常