2013-04-12 3 views
2

Я рассмотрел вопросы, которые, возможно, имели мой ответ, и, к сожалению, они, похоже, не применяются. Вот моя ситуация. Мне нужно импортировать рабочие листы с моего клиента. В столбцах A, C, D и AA клиент имеет необходимую мне информацию. Баланс столбцов имеет то, что для меня бесполезная информация. Заголовки столбцов согласованы в четырех столбцах, которые мне нужны, но очень противоречивы в столбцах, которые не имеют значения. Например, ячейка A1 содержит раздел. Это верно для всех электронных таблиц. Ячейка B1 может содержать все, от длины рукава до общей длины, чтобы соответствовать. Мне нужно импортировать только те столбцы, которые мне нужны, и сопоставлять их с таблицей SQL 2008 R2. Я определил таблицу в хранимой процедуре, которая в настоящее время вызывает функцию SSIS.сценарий задачи в SSIS для импорта таблицы Excel

Проблема заключается в том, что при попытке импортировать электронную таблицу с разными именами столбцов SSIS завершается с ошибкой, и мне нужно вернуться в режим запуска вручную, чтобы правильно настроить поля.

Я не могу себе представить, что то, что я пытаюсь сделать, раньше не было сделано. Просто так, что величина не потеряна, у меня 170 пользователей, у которых более 120 различных шаблонов электронных таблиц.

Я отчаянно нуждаюсь в работоспособном решении. Я могу сделать все, получив файл в моей таблице в SQL. Я даже написал код для перемещения файлов на FTP-сервер.

+0

Я действительно не понимаю, какова ваша проблема. Если вы всегда загружаете столбцы A, C, D и AA, тогда столбец «имена» (я думаю, вы имеете в виду данные в первой строке?) Не имеет значения, потому что вы можете просто ссылаться на них по положению (номеру), а не по имени , Если это не поможет, уточните, что вы подразумеваете под «именем столбца». – Pondlife

+0

Это именно то, что я прошу. Как я могу ссылаться на номер столбца вместо первой строки. Я этого никогда не делал. В каждом другом случае, когда я использовал эту функцию, я импортировал все и затем выбрал соответствующую информацию в SQL. Есть ли учебник, в котором показано, как импортировать определенные столбцы из таблицы Excel в SQL. –

ответ

3

Я собрал сообщение, описывающее, как я использовал Script task to parse Excel. Это позволяет мне импортировать нестандартные данные в поток данных.

Основная идея заключается в том, что вы будете использовать поставщика JET или ACE и просто запрашивать данные из листа Worksheet/named. Когда у вас есть это, у вас есть набор данных, по которым вы можете ходить по строкам и выполнять любую логику, в которой вы нуждаетесь. В вашем случае вы можете пропустить строку 1 для заголовка, а затем импортировать только столбцы A, C, D и AA.

Эта логика будет проходить в классе ExcelParser. Таким образом, цикл Foreach на линии 71, вероятно, будет дистиллированная вниз к чему-то вроде (код приближенной)

// This gets the value of column A 
current = dr[0].ToString(); 
// this assigns the value of current into our output row at column 0 
newRow[0] = current; 

// This gets the value of column C 
current = dr[2].ToString(); 
// this assigns the value of current into our output row at column 1 
newRow[1] = current; 

// This gets the value of column D 
current = dr[3].ToString(); 
// this assigns the value of current into our output row at column 2 
newRow[2] = current; 

// This gets the value of column AA 
current = dr[26].ToString(); 
// this assigns the value of current into our output row at column 3 
newRow[3] = current; 

Вы, очевидно, возможно, придется делать преобразования типов и такие здесь, но это ядро ​​логики синтаксического анализа.

+0

Я хотел бы взять это в автономном режиме, чтобы понять, что происходит. Я очень стараюсь правильно получить эту информацию. Будет ли способ сделать это? –

Смежные вопросы