Сценарий задачи проблема с перечислением файлов Excel в каталоге - PullRequest
0 голосов
/ 22 февраля 2019

Проблема:

У меня есть листы Excel в папке на моем диске D :.Я хочу видеть все файлы 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;

Мне интересно, почему этот код не работает.Также я увидел, что строка [] ничего не перехватывает.

Любой ввод будет высоко оценен.

Спасибо

1 Ответ

0 голосов
/ 23 февраля 2019

Попытка выяснить проблему

Я думаю, что ваш код выглядит нормально, но нуждается в некотором улучшении:

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файлы, то вы должны использовать контейнер цикла по каждому элементу для достижения этого вместо задачи сценария.Существует множество статей, в которых пошагово описывается весь процесс:

...