Как читать значения из Excel с помощью функции Openrowset?

Я читаю лист Excel, используя функцию openrowset?

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

Я попытался перенести содержимое из источника excel в текстовый файл в формате csv, и по какой-то причине текстовое поле, содержащее числовое значение, оказалось пустым (NULL).

Мы будем очень признательны за любой вклад в решение этого вопроса.

SET @Cmd = 'INSERT INTO Table_01
                SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', ''Excel 8.0;Database=' + @ExcelFilePath + ''',
                ''SELECT * FROM [Sheet1$]'')'
    EXEC(@Cmd)

person Jango    schedule 07.12.2010    source источник


Ответы (1)


Это связано с TypeGuessRows и IMEX:

OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;IMEX=1;Database=x.xls',
'SELECT * FROM [Sheet2$]');

TypeGuesssRows можно найти по адресу:

HKEY_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/

Значение 0 означает все строки.

person Fionnuala    schedule 07.12.2010
comment
Я установил значение 0, и он прочитал все числовые значения, но теперь вводит буквенно-цифровые значения из того же столбца. На самом деле столбец имеет буквенно-цифровые, только числовые и только алфавитные символы. Что вы предлагаете здесь? - person Jango; 07.12.2010
comment
Это когда у вас IMEX=1? Я пробовал это с очень смешанными данными и SQL Server 2008, и это работает для меня. - person Fionnuala; 07.12.2010
comment
Спасибо. Это сработало и для меня. Раньше я не пробовал с IMEX=1. Спасибо еще раз. - person Jango; 07.12.2010