SQL Server 2005 SSIS Передача данных SQL в Excel повреждает файл Excel - PullRequest
4 голосов
/ 12 января 2010

У меня есть пакет служб SSIS, который экспортирует данные из таблицы базы данных SQL Server 2005 в электронную таблицу Excel. В рассматриваемой электронной таблице 15 листов, и я пытаюсь заполнить значения на одном из этих листов.

У меня есть файл шаблона, который я клонирую, чтобы стать целью экспорта (простая задача файловой системы). Этот файл шаблона действителен и не поврежден.

Затем у меня есть задача потока данных, в которой в качестве источника данных используется SQL-запрос. Если я предпросмотрю это, все в порядке. Затем я исключаю все столбцы, кроме одного (тип данных int).

У меня есть источник данных Excel (который является целевой таблицей, как упомянуто выше), и я связываю их, перенося через один выбранный столбец. При предварительном просмотре я получаю первый намек на то, что что-то не так:

При предварительном просмотре произошла ошибка.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Индекс и длина должны указывать на местоположение в строке.

Имя параметра: длина (mscorlib)

Когда я запускаю пакет, он проходит нормально, сообщая, что у меня скопирована 1 строка. Когда я открываю электронную таблицу, я получаю следующую ошибку:

Ошибка файла: данные могут быть потеряны

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

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

Сначала я подумал, что, возможно, это связано с тем, что пакет обновления не был развернут, но я наблюдал такое поведение на установках RTM и SP3 SQL 2005, и я немного застрял.

Я был бы очень признателен всем, кто имел подобный опыт и мог бы помочь. Спасибо

Ответы [ 4 ]

6 голосов
/ 13 января 2010

Мы подошли ко всему этому.

Чтобы данные отображались в правильном формате, разработчик электронной таблицы имел скрытую строку значений в качестве первой строки электронной таблицы. Это то, что вам нужно сделать, если вы хотите, чтобы ваши номера были числами и т. Д.

Итак, в ячейках, чей столбец должен быть числовым, был помещен 0, дата в каждой ячейке столбца даты и апостроф (') для всех текстовых столбцов.

Последнее не было строго необходимо, и когда они были удалены, электронная таблица, казалось, начала работать.

Особенность этого, однако, заключается в том, что электронная таблица работала нормально во всех средах доставки. Только тогда во время местного развития возникла проблема.

Если бы кто-то мог пролить больше света на то, почему это так, то это было бы очень ценно.

2 голосов
/ 22 октября 2010

У меня была та же ошибка в предварительном просмотре:

"Индекс и длина должны указывать на местоположение в строке.

Имя параметра: длина (mscorlib)"

Одно из имен листов в файле Excel содержало символ пробела и дефис.Неважно, на каком листе были пробелы или дефис, так как мне пришлось удалить их все, чтобы использовать предварительный просмотр.

1 голос
/ 14 августа 2013

Это сообщение появляется у меня, когда я пытаюсь просмотреть предварительный просмотр файла Excel с SSIS.

Решение, которое я нашел, заключается в изменении названия листа.

Он должен начинаться с буквы, и вы должны удалить все пробелы.

1 голос
/ 12 января 2010

У меня есть источник данных Excel (который является целевой таблицей, как упомянуто выше), и я связываю их, перенося через один выбранный столбец. При предварительном просмотре появляется первая подсказка, что что-то не так:

При предварительном просмотре произошла ошибка.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Индекс и длина должны указывать на местоположение в строке.

Имя параметра: длина (mscorlib)

Когда я запускаю пакет, он проходит нормально, сообщая, что у меня скопирована 1 строка. Когда я открываю электронную таблицу, я получаю следующую ошибку:

Ошибка файла: данные могут быть потеряны

Вы пытались воссоздать этот целевой компонент? Это было бы хорошим местом для начала, похоже, что оно стало испорченным (не уверен, что слово «испорченное» - правильное слово, но в SSIS, которое я нашел, такое часто случается). Обычно я пытаюсь заменить проблемные компоненты, прежде чем исследовать другие возможности.

...