Как экспортировать SSIS в Microsoft Excel без дополнительного программного обеспечения? - PullRequest
5 голосов
/ 15 апреля 2009

Этот вопрос давно задуман, потому что я очень долго обновлял вопрос, пытаясь заставить 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 и будет работать нормально.

Ответы [ 8 ]

3 голосов
/ 17 апреля 2009

Было бы проще создать книгу Excel в задаче сценария, а потом просто взять ее позже в процессе?

Движок SSIS хорош, но интеграция с Excel ужасна

«Использование SSIS в сочетании с Excel - это все равно, что смывать горячую смолу в iHole в дорожном конусе»

2 голосов
/ 14 апреля 2011

Это старая ветка, но как насчет использования плоского файлового соединения и записи данных в виде отформатированного HTML-документа. Установите тип MIME в заголовке страницы «application / excel». Когда вы отправляете документ как вложение, а получатель открывает вложение, он открывает сеанс браузера, но ему нужно открыть Excel поверх данных, отформатированных в соответствии со стилем (CSS), указанным на странице.

2 голосов
/ 11 мая 2009

Dr. Зим, я полагаю, ты был тем, кто первоначально поднял этот вопрос. Я полностью чувствую твою боль. Я люблю SSIS в целом, но я абсолютно ненавижу ограниченные инструменты, которые входят в стандартную для Excel. Все, что я хочу сделать, это выделить жирным шрифтом заголовок или строку Row1 в Excel, а не жирным шрифтом следующие записи. Я не нашел отличный способ сделать это; Разумеется, я подхожу к этому без задач скрипта или пользовательских расширений, но вы думаете, что эта простая вещь будет стандартной опцией. Похоже, меня могут заставить исследовать и программировать что-то необычное для задачи, которая должна быть настолько фундаментальной. Я уже потратил много времени на это сам. Кто-нибудь знает, можно ли использовать Excel XML с версиями Excel: 2000 / XP / 2003? Спасибо.

1 голос
/ 23 июня 2010

Вместо того, чтобы использовать обходной способ выполнения этого упражнения, пытаясь записать данные в конкретную ячейку (я), отформатируйте ячейку (и), отформатируйте их, что действительно является очень утомительным усилием, учитывая поддержку SSIS для EXCEL, мы может пойти "шаблон" способ сделать это.

предположим, что нам нужно записать данные в ячейку «так и так» со всеми выполненными на ней пользовательскими форматировками. Имейте все форматирование на листе, скажем «SheetActual», в то время как ячейки, в которых будут храниться данные, на самом деле будут иметь Подыски / ссылки / формулы для ссылки на исходные данные, которые SSIS экспортирует в скрытый лист, скажем «SheetMasterHidden» того же Excel подключение. Этот «SheetMasterHidden» по существу будет содержать основные данные в формате по умолчанию, который SSIS записывает в Excel. Таким образом, вам не нужно беспокоиться о форматировании времени выполнения данных.

Форматирование Excel - одноразовая работа. «ЕСЛИ» форматирование меняется не очень часто. Если формат изменяется и формат определяется во время выполнения, это решение может не очень хорошо работать.

1 голос
/ 24 апреля 2009

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

Если это кажется возможным, я использовал решение CarlosAg Excel Xml Writer Library . При этом вы можете создавать код, который похож на использование библиотеки Interop, но создает Excel в формате XML. Это позволяет избежать использования объекта Interop, который иногда может привести к тому, что процессы Excel будут зависать вокруг .

1 голос
/ 23 апреля 2009

Когда Excel является местом назначения в SSIS или целевым типом экспорта в SSRS, у вас нет большого контроля над форматированием и указанием того, каким должен быть конечный файл. Однажды я написал собственный движок рендеринга Excel для SSRS, так как мой клиент очень строго относился к формату сгенерированного окончательного отчета Excel. Я использовал «Excel xml», чтобы выполнить работу внутри моего пользовательского средства визуализации. Может быть, вы можете использовать вывод XML и преобразовать его в Excel XML с помощью XSLT.

1 голос
/ 20 апреля 2009

Может ли SSIS записать данные в лист Excel, начиная с A1, а затем создать другой лист, отформатированный так, как вам нравится, который ссылается на другой лист в A1, но отображает его как A4? То есть на «симпатичном» листе А4 будет означать А1 на листе служб SSIS.

Это позволит SSIS делать то, для чего он хорош (манипулировать данными на основе таблиц), но позволяет форматировать или обрабатывать Excel так, как вам хочется.

0 голосов
/ 23 сентября 2009

Ответ в вопросе. Со временем это стало статусом прогресса. Тем не менее, есть SSRS, которая будет создавать файлы Excel, если вы создаете презентации TABLE. Это тоже неплохо работает.

...