脚本任务问题在目录中列出excel文件

时间:2019-02-22 19:23:46

标签: c# excel ssis etl script-task

问题:

我的D:驱动器上的文件夹中有Excel工作表。我想在脚本任务中查看变量中的所有Excel文件。

SSIS变量:

ReadOnly: Folderpath
Read and Write only: ExcelFiles

C#代码:

const string FILE_PATTERN = "*.xlsx";

string excelFolder;
string[] excelFiles;

excelFolder = Dts.Variables["ExcelFolder"].Value.ToString();
excelFiles = Directory.GetFiles(excelFolder, FILE_PATTERN);

Dts.Variables["ExcelFiles"].Value = excelFiles;
//MessageBox.Show(excelFiles.ToString());

Dts.TaskResult = (int)ScriptResults.Success;

我想知道为什么此代码无法正常工作。我也看到string []没有捕获任何东西。

任何输入都会受到赞赏。

谢谢

1 个答案:

答案 0 :(得分:0)

试图找出问题所在

我认为您的代码看起来不错,但是需要一些改进:

const string FILE_PATTERN = "*.xlsx";

string excelFolder;
string[] excelFiles;

excelFolder = Dts.Variables["User::FolderPath"].Value.ToString();
excelFiles = Directory.GetFiles(excelFolder, FILE_PATTERN,SearchOption.AllDirectories);

Dts.Variables["User::ExcelFiles"].Value = excelFiles;
//MessageBox.Show(excelFiles.ToString());

Dts.TaskResult = (int)ScriptResults.Success;
  1. 首先,如您提到的,您应该将ExcelFolder作为变量名传递给FolderPath
  2. 第二个改进是选择SearchOption.AllDirectories,因为excel文件可以在子目录中找到,而不是在主目录中。
  3. 如果变量是用户变量,请添加变量修饰符User::

如果这些建议不起作用,请检查FolderPath值是否合适。

更好的方法

如果要循环浏览excel文件,则应使用Foreach循环容器来实现该功能,而不要使用脚本任务。有很多文章逐步描述了整个过程: