SQL Server 2005 OPENROWSET вставка в Excel - форматирование текста в числа - PullRequest
0 голосов
/ 19 февраля 2012

Так что это не так уж и сложно, но Google не возвращает ничего более свежего (в основном 2007 или около того) о том, что это, возможно, проблема с драйвером Excel ... Я пришел сюда, чтобы задать вопрос, который я нашел как «ответ»"было неприемлемо без дальнейших исследований.

Моя проблема:

Очистить динамический запрос OPENROWSET и вставить новые данные для отправки отчета конкретным пользователям - в базовом отчете Excel содержатся некоторыекоторый он вычисляет и суммирует на основе вставленных данных, и формулы умножения, кажется, работают нормально, но если суммы не отформатированы должным образом в Excel как «числа» вместо текста, сумма не будет функционировать ...

Решение должно основываться на свободной форме (если решение вообще существует), я не хочу переносить весь свой код в SSIS ...

Обновление / вставка кода:

    SELECT @sqlu = 'UPDATE OPENROWSET(' +
    '''Microsoft.ACE.OLEDB.12.0'', ' +
    '''Excel 12.0;Database=' + @File + ';HDR=YES'', ' +
    '''SELECT * FROM [Base$B1:G601]'')
    SET 
    col1 = '''', col2 = '''', col3 = '''', col4 = '''', col5 = '''', col6 = '''' '


    EXEC (@sqlu)


    SELECT @sqli = 'INSERT INTO OPENROWSET(' +
    '''Microsoft.ACE.OLEDB.12.0'', ' +
    '''Excel 12.0;Database=' + @File + ';HDR=NO'', ' +
    '''SELECT * FROM [Base$B1:G2]'')

    SELECT col1, col2, col3, col4, col5, col6
    FROM [DATABASE].[dbo].tbl_CIM
    WHERE col1 IN(''' + @area + ''')'


    EXEC (@sqli)

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

Любая помощь или источники для исследования, если это проблема с драйверами, приветствуется, поскольку я не смог найти ни одной.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Вы пытались добавить IMEX=1 в строку подключения? Это должно заставить драйвер выдавать вам все в столбцах как текст независимо от их интерпретированного формата.

Полный пример строки подключения, использующей ее здесь .

0 голосов
/ 04 апреля 2012

Единственный известный мне способ - создать фиктивную строку данных на листе Excel, в который вы пишете. Поместите поддельные данные в эту строку в том же формате, в котором вы хотите экспортировать данные. При необходимости вы можете скрыть эту строку.

Это должно решить обе проблемы, однако вам придется иметь дело с фиктивной строкой, которая может раздражать, если вы используете данные для сводной таблицы

...