在SSIS中创建动态Excel连接

在SSIS中创建动态Excel连接,excel,dynamic,ssis,connection-string,Excel,Dynamic,Ssis,Connection String,在SSIS中使用静态ole db>excel连接管理器时,我在excel连接管理器中设置要连接的文件,创建数据流excel目标,将其连接到ole db源并映射字段 在这种情况下,我想做同样的事情,但不是链接到现有的文件,我想创建一个新的文件,并把我的数据放在那里。现在我知道我可以在现有excel连接中执行SQL任务并创建一个新表(有效工作表),但在这种情况下,我创建了一个脚本任务来创建新文件的完整路径,例如c:\docs\mypjt\fileformarch.xls,代码如下: Public S

在SSIS中使用静态ole db>excel连接管理器时,我在excel连接管理器中设置要连接的文件,创建数据流excel目标,将其连接到ole db源并映射字段

在这种情况下,我想做同样的事情,但不是链接到现有的文件,我想创建一个新的文件,并把我的数据放在那里。现在我知道我可以在现有excel连接中执行SQL任务并创建一个新表(有效工作表),但在这种情况下,我创建了一个脚本任务来创建新文件的完整路径,例如c:\docs\mypjt\fileformarch.xls,代码如下:

Public Sub Main()
    '
    ' Add your code here
    '
    Dim strFileName As String
    Dim strFolderName As String
    Dim strMonthNameShort As String
    Dim strFullPath As String
    Dim lastMonth As New Date(DateTime.Today.Year, DateTime.Today.Month - 1, 1)
    strFileName = Dts.Variables("FileName").Value.ToString
    strFolderName = Dts.Variables("FolderName").Value.ToString
    strMonthNameShort = MonthName(lastMonth.Month, True)
    strFullPath = strFolderName & strFileName.Substring(0, strFileName.IndexOf(".xls")) & strMonthNameShort & ".xls"

    Dts.Variables("FullPath").Value = strFullPath
    Dts.TaskResult = Dts.Results.Success
End Sub
但我不知道如何创建动态连接和映射,我尝试在excel连接管理器中处理连接字符串等,但没有发现任何问题,因此我无法完全了解我需要做什么

我不确定是否需要一个带有列标题的模板来设置默认映射,但我读过很多案例,其中excel连接管理器只需要与“a”文件的初始连接,然后动态连接字符串程序在运行时接管,但是,如果您正在创建一个新文件,它如何知道映射是什么呢

我很感激你能给我的任何建议

谢谢


Andrew

您是否尝试过Dts.Connections(“MyExcelConnection”).ConnectionString=strFullPath?或者在excel连接管理器中,您也可以在ConnectionString属性上使用表达式。@Dominic Goulet尝试过,但老实说,我想我需要事先设置其他内容。从上面粘贴的脚本任务中,我想:1)在目录中创建一个路径名为的新文件2)在该新文件中创建一个新表结构,以匹配SSI创建的SQL表中的数据,3)使用SQL中的数据填充工作表中的表。我可以完成第2步和第3步,但缺少正确完成第1步的信息。似乎您必须与现有工作簿建立现有连接,然后才能使用动态字符串。一旦我设置了使用动态字符串的连接,就会出现错误。在我的fullPath和monthname变量的SSIS变量定义中,我应该有一个默认值吗?到目前为止,我没有任何默认值?我一直运行包,直到脚本和变量FullPath具有正确的字符串。但现在我想知道我需要完整路径还是只需要动态文件名?