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

Posted

技术标签:

【中文标题】SSIS将自定义标题添加到Excel文件【英文标题】:SSIS add Custom Header to Excel file 【发布时间】:2018-10-27 00:08:50 【问题描述】:

我们正在使用 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 代理中出现错误。

来自 SQL Server 代理的错误

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

【问题讨论】:

【参考方案1】:

调用目标抛出异常

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

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

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

Exception has been thrown by the target of an invocation - SSIS Script Task Error Script task error: exception has been thrown by the target of an invocation

【讨论】:

以上是关于SSIS将自定义标题添加到Excel文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将今天的日期excel表自动导入SSIS [重复]

SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡

使用 SSIS 加载最新的 Excel 文件:脚本任务调试

使用 ssis 包导入 excel 到 sql server 失败

除非手动保存,否则无法使用 SSIS 打开 excel 文件

如何遍历 Excel 文件并使用 SSIS 包将它们加载到数据库中?