SSIS импорт Excel, вызывающий неправильный тип столбца

<?xml version=\"1.0\" standalone=\"yes\"?> <?mso-application progid=\"Word.Document\"?><pkg:package xmlns:pkg=\"http://schemas.microsoft.com/office/2006/xmlPackage\"><pkg:part pkg:name=\"/_rels/.rels\" pkg:contentType=\"application/vnd.openxmlformats-package.relationships+xml\" pkg:padding=\"512\"><pkg:xmlData><Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\"> <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"word/document.xml\"/> </Relationships></pkg:xmlData> </pkg:part> <pkg:part pkg:name=\"/word/document.xml\" pkg:contentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"><pkg:xmlData><w:document  xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:body>    <w:p w:rsidR=\"002715FD\" w:rsidRDefault=\"002715FD\"><w:fldSimple w:instr=\" MERGEFIELD &quot;Last_Name&quot; \"><w:r><w:rPr><w:noProof /></w:rPr><w:t>«Last_Name»</w:t></w:r></w:fldSimple></w:p><w:sectPr w:rsidR=\"00000000\"> <w:pgSz w:w=\"12240\" w:h=\"15840\"/><w:pgMar w:top=\"1440\" w:right=\"1440\" w:bottom=\"1440\" w:left=\"1440\" w:header=\"720\" w:footer=\"720\" w:gutter=\"0\"/><w:cols w:space=\"720\"/></w:sectPr> </w:body>  </w:document> </pkg:xmlData></pkg:part></pkg:package>  

Выше xml для поля слияния

Word.run(function (context) {

    // Queue a command to get the current selection and then
    // create a proxy range object with the results.
    var range = context.document.getSelection();

    // Queue a commmand to insert OOXML in to the beginning of the range.
    range.insertOoxml("PASTE ABOVE MERGE XML", Word.InsertLocation.start);

    // Synchronize the document state by executing the queued commands,
    // and return a promise to indicate task completion.
    return context.sync().then(function () {
        console.log('OOXML added to the beginning of the range.');
    });
})
.catch(function (error) {
    console.log('Error: ' +JSON.stringify(error));
    if (error instanceof OfficeExtension.Error) {
        console.log('Debug info: ' + JSON.stringify(error.debugInfo));
    }
});
49
задан Hadi 24 March 2019 в 10:10
поделиться

4 ответа

Я видел эту проблему прежде, это - Excel, который является проблемой не SSIS. Excel выбирает 1-е немного строк и затем выводит тип данных даже при явной установке его для отправки текстовых сообщений. То, что необходимо сделать, помещается это в строку подключения файла Excel в пакете SSIS. Эта инструкция говорит Excel, что столбцы содержат смешанные типы данных и подсказки это, чтобы сделать дополнительную проверку прежде, чем решить, что столбец является числовым типом, когда на самом деле это не.

;Extended Properties="IMEX=1"

Это должно работать с этим (в большинстве случаев). Более безопасная вещь сделать экспортировать данные Excel, чтобы снабдить вкладками разделенный текст и использовать SSIS для импорта этого.

41
ответ дан James 7 November 2019 в 11:34
поделиться

Вы можете преобразовать (т.е. принудительно) данные столбца в текст ... Попробуйте это (Примечание: эти инструкции основаны на Excel 2007) ...

Следующие шаги должны заставить Excel обрабатывать столбец как текст:

Открыть электронную таблицу в Excel.

Выбрать весь столбец, который содержит ваши «в основном числовые данные», нажав на заголовок столбца.

Нажмите на вкладку «Данные» в меню ленты.

Выберите «Текст в столбцы». Это вызовет мастер преобразования текста в столбцы.

-На шаге 1: нажмите кнопку Далее

-На шаге 2: нажмите кнопку Далее

-На шаге 3: выберите текст и нажмите кнопку Готово

Сохранить свой Excel лист.

Повторите попытку импорта с помощью мастера импорта данных SQL Server 2005.

Кроме того, вот ссылка на другой вопрос, который имеет дополнительные ответы:

Мастеру импорта данных не нравится тип данных, который я выбираю для столбца

33
ответ дан 7 November 2019 в 11:34
поделиться

В принятом ответе не упоминается одна вещь: параметр «IMEX = 1» должен находиться внутри цитируемой части:

...;Extended Properties="...";
13
ответ дан 7 November 2019 в 11:34
поделиться

Вариант 1. Используйте Visual Basic, чтобы перебирать каждый столбец и форматировать каждый столбец как текст.

Используйте меню Text-to-Columns, не меняйте исключение и измените "General" на "Text"

0
ответ дан 7 November 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: