Этот вопрос давно задуман, потому что я очень долго обновлял вопрос, пытаясь заставить SSIS правильно экспортировать данные Excel. Мне удалось решить эту проблему, хотя и не правильно . Помимо того, что кто-то дает правильный ответ, решение, перечисленное в этом вопросе, не страшно.
Единственный ответ, который я нашел, состоял в том, чтобы создать одну строку с именем диапазона , достаточно широкую для моих столбцов. В названном диапазоне поместите пример данных и скройте его . Служба SSIS добавляет данные и считывает метаданные из единственной строки (достаточно близко, чтобы в нее можно было что-то добавить). Данные принимают формат скрытой отдельной строки. Это позволяет использовать заголовки и т. Д.
ВАУ какая боль в заднице. Для восстановления потерянного времени потребуется более 450 дней экспорта. Тем не менее, я все еще люблю SSIS и буду продолжать использовать его, потому что он все еще намного лучше, чем Filemaker LOL. Моя следующая попытка будет делать то же самое на сервере отчетов.
Оригинальные примечания к вопросу:
Если вы работаете в конструкторе служб интеграции SQL Server и хотите экспортировать данные в файл Excel, начиная с чего-то, отличного от первой строки, скажем, четвертая строка, как вы это укажете?
Я попытался войти в пункт назначения потока данных Excel, изменил AccessMode на OpenRowSet из Variable, а затем присвоил переменной значение «YPlatters $ A4: I20000». Это не дает результатов, так как не удается найти лист. Лист называется YPlatters.
Я думал, вы могли бы указать (Sheet $) (Начальная ячейка) :( Конечная ячейка)?
Обновление
Видимо, в Excel вы можете выбрать набор ячеек и назвать их в поле имени. Это позволяет выбрать имя вместо листа без знака доллара. Как ни странно, какой бы диапазон вы ни указали, он добавляет данные в следующую строку после диапазона. Как ни странно, когда вы добавляете данные, это увеличивает количество строк именованного выделения.
Еще одна странная вещь - данные принимают формат последней строки указанного диапазона. Мои строки заголовка выделены жирным шрифтом. Если я укажу диапазон, который заканчивается строкой заголовка, данные добавляются в строку ниже и выделяют все записи жирным шрифтом. если вы укажете одну строку ниже, она поместит пустую строку между строкой заголовка и данными, но данные не будут выделены жирным шрифтом.
Еще одно обновление
Независимо от того, что я пытаюсь, SSIS производит выборку «первой строки» файла и устанавливает метаданные в соответствии с тем, что он находит. Однако если у вас есть примеры данных, которые имеют нулевое значение, но отформатированы как первая строка, он обрабатывает этот столбец как текст и вставляет числовые значения с одинарной кавычкой впереди ('123.34). Я также попробовал заголовки, которые не отражают типы данных столбцов. Я попытался изменить метаданные места назначения Excel, но он всегда изменяет его обратно, когда я запускаю проект, а затем терпит неудачу, говоря, что он будет обрезать данные. Если я скажу ему игнорировать ошибки, он импортирует все, кроме этого столбца.
Несколько дней по несколько часов спустя ...
Еще одно обновление
Я попробовал каждую комбинацию. Наиболее рабочий пример - создание именованного диапазона, начиная с заголовков столбцов. Отформатируйте заголовки столбцов так, чтобы данные выглядели так, как данные принимают в этом формате. В моем примере они существуют от A4 до E4, что является моим определенным диапазоном. Службы SSIS добавляются в строку после заданного диапазона, поэтому при определении от A4 до E68 строки добавляются, начиная с A69. Вы определяете Соединение, поскольку первая строка содержит имена полей. Он принимает метаданные строки заголовка, как ни странно, а не второй строки, и угадывает тип данных, а не форматированный тип данных столбца, то есть заголовки - это текст, поэтому все мои метаданные - это текст. Если ваши заголовки выделены жирным шрифтом, все ваши данные - тоже.
Я даже попытался создать пример строки данных безуспешно ... Я не думаю, что кто-то на самом деле использует Excel с экспортом MS SSIS по умолчанию.
Если бы вы могли определить «диапазон вставки» (от A5 до E5) без строки заголовка и отформатировать эти столбцы (валюта, не жирный и т. Д.), Не пропуская строку в Excel, это было бы очень полезно. Из того, что я понял, никто не использует SSIS для экспорта в Excel без стороннего менеджера соединений.
Любые идеи о том, как правильно настроить это так, чтобы данные форматировались правильно, т. Е. Метаданные, считанные из Excel, соответствуют реальным данным, а форматирование наследуется от первой строки данных, а не от заголовков в Excel?
Последнее обновление (17 июля 2009 г.)
Я получил это, чтобы работать очень хорошо. Одна вещь, которую я добавил в Excel, была IMEX = 1 в строке подключения Excel: «Excel 8.0; HDR = Да; IMEX = 1». Это заставляет Excel (я думаю) просматривать все строки, чтобы увидеть, какие данные в нем. Как правило, это не сбрасывает информацию, например, если у вас есть почтовый индекс, то примерно на 9 строк ниже у вас есть почтовый индекс +4, Excel без этого полностью пропускает это поле без ошибок. При IMEX = 1 он распознает, что Zip - это фактически символьное поле, а не числовое.
И, конечно, еще одно обновление (27 августа 2009 г.)
IMEX = 1 успешно импортирует данные с отсутствующим содержимым в первых 8 строках, но не сможет экспортировать данные, если данных не существует. Поэтому укажите его в строке подключения для импорта, но не в строке подключения для экспорта в Excel.
Я должен сказать, что после стольких поворотов он работает довольно хорошо.
P.S. Если вы используете 64-разрядную версию, убедитесь, что вы вызываете DTExec из C: \ Program Files \ Microsoft SQL Server \ 90 \ DTS.x86 \ Binn. Он загрузит 32-битный драйвер Excel и будет работать нормально.