【问题标题】:How to rename excel file name dynamically?如何动态重命名excel文件名?
【发布时间】:2020-01-11 09:56:17
【问题描述】:

每当我按日期运行作业时,我都会尝试动态更改 excel 文件。

在我尝试过的excel连接管理器的连接字符串中:

"C:\ReportOutput" + RIGHT("0" + (DT_WSTR,2)DATEPART("dd",GetDate()) ,2)+
RIGHT("0" + (DT_WSTR,2)DATEPART("mm",GetDate()),2)+
(DT_WSTR,4)DATEPART("yyyy",GetDate()) +"_withdata.xls"

但它不起作用。同样在连接管理器中,我提供了文件位置。我希望文件在每次作业运行时动态创建和重命名。

【问题讨论】:

  • “但它不起作用”是什么意思?你有错误吗?

标签: sql-server excel ssis expression etl


【解决方案1】:

我认为主要的问题是你错过了转义字符,你也可以使用DAY()MONTH()YEAR()而不是DATEPART()

"C:\\ReportOutput" + 
RIGHT("0" + (DT_WSTR,2)DAY(GetDate()) ,2) +
RIGHT("0" + (DT_WSTR,2)MONTH(GetDate()),2)+
(DT_WSTR,4)YEAR(GetDate()) +"_withdata.xls"

【讨论】:

    【解决方案2】:

    您需要按照 2 个步骤来动态重命名 excel 文件名。

    在第一步中,使用 String DataType 创建 3 个变量

    1. OutputFolderPath:这是我们存储输出文件夹名称的静态变量(即:C:\)

    2. Date_Time_Dynamic: 这是一个动态变量,用于存储日期时间值(例如:“20190909_114500”),使用以下表达式从 GetDate() 函数计算得出..

    随着时间:REPLACE(REPLACE(REPLACE(SUBSTRING((DT_WSTR,50)GETDATE(),1,19),"-",""), ":",""),","_")
    没有时间:REPLACE(SUBSTRING((DT_WSTR,50)GETDATE(),1, 10),"-","")

    1. 输出文件全路径: 这是包中使用的重要动态变量,用于动态创建和输出文件,文件系统任务完成模板文件名的日期时间后缀。 此文件将动态传递到数据流中的 Excel 目标连接,以保存输出。 这个变量值是使用下面的表达式计算出来的。

      @[User::OutputFolderPath] + "ReportOutput_"+ @[User::Date_Time_Dynamic]+".xls"

    例如:C:\ReportOutput_20190909_114500.xls - 随时间
    C:\ReportOutput_20190909.xls - 没有时间
    注意:需要添加时间作为后缀。因此,它将始终在目标文件夹中创建新文件。

    在第二步中,通过将 ExcelFilePath 分配给属性 > 表达式中的变量,使 Excel 与 Excel 文件的连接是动态的,如下所示...

    ExcelFilePath = @[User::OutputFileFullPath]

    【讨论】:

    • 感谢 JIKEN,但我无法在每次尝试运行包时动态创建新的 Excel 表。它采用带有新日期的文件名,但不创建任何文件 @[User::OutputFile]+"ReportOutput_"+REPLACE(SUBSTRING((DT_WSTR,50)GETDATE(),1,10),"-"," ")+".xls" -- 我在 Excel 文件路径表达式中使用这个
    • @TirathSingh - 请检查此link。您需要使用文件系统任务将模板文件从模板文件夹复制到目标文件夹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2021-05-24
    • 2014-02-22
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多