Я использую SSIS для загрузки файлов xlsx с разными именами листов, но с одинаковой структурой. Мне нужно загружать только первый лист каждого файла, но имя не может быть одинаковым каждый раз, поэтому мне нужно всегда указывать на первый лист независимо от его имени. Я думаю, что в режиме доступа к данным в исходной задаче Excel невозможно использовать индекс (1-й), поэтому я пытаюсь использовать сценарий задачи, чтобы получить имя первого листа каждого файла и поместить его в переменную Sheet_name и используйте его в режиме доступа к данным для каждого файла.
У меня есть исключение с кодом выше, и я не знаю, как его решить.
Я пытался найти решение без использования скрипта, но не нашел его, поэтому пытаюсь заставить мой код работать.
public void Main()
{
String FolderPath =
Dts.Variables["User::Folder_To_Be_Processed_Path"].Value.ToString();
String File_Name = Dts.Variables["User::File_Name"].Value.ToString();
string fileFullPath = "";
fileFullPath = FolderPath + "\\" + File_Name;
string connString = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" +
fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=YES\";";
using (OleDbConnection conn = new OleDbConnection(connString))
{
conn.Open();
MessageBox.Show(connString);
dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {
null, null, null, "TABLE" });
Dts.Variables["User::Sheet_Name"].Value= dtSchema.Rows[0].Field<string>
("TABLE_NAME");
}
Dts.TaskResult = (int)ScriptResults.Success;
}