【问题标题】:Loading Most Recent Excel File with SSIS: Script Task Debugging使用 SSIS 加载最新的 Excel 文件:脚本任务调试
【发布时间】:2020-10-15 22:38:54
【问题描述】:

我尝试在文件夹中获取“上次修改”的 excel 文件并将其加载到 SSIS 中。我找到了一个 C# 代码来获取文件夹路径中最新 Excel 工作表的名称,并将其复制到脚本任务中。代码是:


using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;



namespace ST_2e01f076aa4f46d692cf4b47f5587da9.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {

        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

        public void Main()
        {

            // TODO: Add your code here
            var directory = new DirectoryInfo(Dts.Variables["User::VarFolderPath"].Value.ToString());

            FileInfo[] files = directory.GetFiles();
            DateTime lastModified = DateTime.MinValue;

            foreach (FileInfo file in files)
            {
                if (file.LastWriteTime > lastModified)
                {
                    lastModified = file.LastWriteTime;
                    Dts.Variables["User::VarFileName"].Value = file.ToString();
                }
            }

            MessageBox.Show(Dts.Variables["User::VarFileName"].Value.ToString());


            Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
}

但是,当我运行脚本任务对其进行测试时,我收到以下错误:

我在代码中使用了错误显示的项目名称,但仍然无法正常工作。您能否帮我解决它,因为我是 SSIS 和 C# 的新手。谢谢

【问题讨论】:

    标签: c# ssis script-task


    【解决方案1】:

    这是使用 Linq 的答案。

    首先添加这些命名空间

    using System.Collections.Generic; //This gets you list
    using System.Linq; //This allows you linq functions
    
    //Here is your code
    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"D:\Temp");
    List<System.IO.FileInfo>    fi = di.EnumerateFiles().ToList();
    Dts.Variables["VarFileName"].Value = fi.Where(i=>i.Extension.ToLower()==".xls")
                    .OrderByDescending(i => i.LastWriteTime)
                    .Select(i => i.FullName).FirstOrDefault();
    

    【讨论】:

      猜你喜欢
      • 2012-04-05
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多