Мне нужно обработать файлы Excel, сохраненные в определенной папке.Как открыть OLEDBConnection через задачу скрипта SSIS?
В моем пакете SSIS я добавил цикл Foreach, настроенный как File Enumérator, заполняющий переменную filepath
. Затем задача сценария использует эту переменную, чтобы открыть файл Excel и обработать его.
Однако, я не в состоянии открыть OLEDB Подключение к моему файлу в задаче сценария. filepath
содержит допустимый путь. Я добавил тест в свой скрипт, чтобы проверить файл.
Вот пример моего кода:
// Check file to process.
string rawfilePath = Dts.Variables["User::FilePath"].Value.ToString().Replace(@"\",@"\\");
if (rawfilePath == String.Empty || !File.Exists(rawfilePath))
Dts.Events.FireError(0, SCRIPT_TASK_NAME, "Invalid input file '" + rawfilePath + "'...", String.Empty, 0);
MessageBox.Show(rawfilePath);
// Open connection.
string rawFileConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='"
+ rawfilePath + "';Extended Properties='Excel 12.0;HDR=NO;IMEX=1'";
MessageBox.Show(rawFileConnectionString);
OleDbConnection rawExcelConnection = new OleDbConnection(rawFileConnectionString);
rawExcelConnection.Open();
Моя папка C:\TestFolder
. Он содержит два файла: C:\TestFolder\export_20140101.xls
и C:\TestFolder\export_20140102.xls
.
Здесь ошибка:
В английском
Исключение было брошено в целью вызова
У вас есть окна сообщений? Какая строка не работает, создание экземпляра 'rawExcelConnection' или' Open'? – billinkc
Запустите его в режиме отладки или поместите весь код в блок catch try и используйте Dts.FireError с сообщением об исключении в блоке catch – jazzytomato
Блок try/catch спас мне жизнь! Ошибка была связана с движком базы данных (ACE 12.0). Водитель не был найден, я никогда не устанавливал его раньше. – K4timini