使用 SSIS 加载最新的 Excel 文件:脚本任务调试
Posted
技术标签:
【中文标题】使用 SSIS 加载最新的 Excel 文件:脚本任务调试【英文标题】:Loading Most Recent Excel File with SSIS: Script Task Debugging 【发布时间】: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# 的新手。谢谢
【问题讨论】:
【参考方案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();
【讨论】:
以上是关于使用 SSIS 加载最新的 Excel 文件:脚本任务调试的主要内容,如果未能解决你的问题,请参考以下文章
如何遍历 Excel 文件并使用 SSIS 包将它们加载到数据库中?