问题:
我的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 []没有捕获任何东西。
任何输入都会受到赞赏。
谢谢
答案 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;
ExcelFolder
作为变量名传递给FolderPath
。 SearchOption.AllDirectories
,因为excel文件可以在子目录中找到,而不是在主目录中。User::
如果这些建议不起作用,请检查FolderPath
值是否合适。
如果要循环浏览excel文件,则应使用Foreach循环容器来实现该功能,而不要使用脚本任务。有很多文章逐步描述了整个过程: