Несоответствие типа данных OleDbDataAdapter с использованием Jet

Я использую OleDbDataAdapter (точнее, Microsoft.ACE.OLEDB.12.0) для извлечения данных из книги Excel. Для одной таблицы я использую типизированный набор данных, но для другой таблицы я не могу этого сделать, так как количество столбцов неизвестно (шаблон Excel может создавать дополнительные столбцы).

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

Теперь я попытался сначала подсчитать количество используемых столбцов и подготовить новую таблицу данных с определенной коллекцией столбцов и установить для их свойства DataType значение typeof(string). К сожалению, JET, кажется, не смотрит на это и все еще выбирает свой собственный путь. Я предполагаю, что даже если бы я мог использовать здесь строго типизированный набор данных, это тоже не помогло бы...

Кто-нибудь знает, как сообщить JET, как импортировать данные, чтобы мне не приходилось сталкиваться с бременем доставки новой версии шаблона?

Пожалуйста, *ПОЖАЛУЙСТА*: не используйте решение для автоматизации Excel...


person Koen    schedule 09.06.2011    source источник


Ответы (1)


Если у вас есть доступ к реестру, установите TypeGuessRows=0 и/или ImportMixedTypes=Text. Дополнительные сведения см. здесь: НАСТРОЙКИ ИНИЦИАЛИЗАЦИИ

person Community    schedule 09.06.2011
comment
Я обнаружил, что вы также можете установить их в расширенных свойствах моей строки подключения oledb, чтобы это действительно решило мою проблему. Мне также нужно установить IMEX=1, чтобы это работало... - person Koen; 09.06.2011
comment
На самом деле, только установка IMEX=1 уже помогает. Похоже, что эти настройки инициализации на самом деле не влияют на соединение... - person Koen; 09.06.2011
comment
@Koen IMEX и HDR можно установить в расширенных свойствах, но я уверен, что TypeGuessRows — это параметр только для реестра. Это зависит от компоновки данных и от того, где происходит смешивание типов данных, влияющих на влияние настроек. - person ; 09.06.2011
comment
Никогда не меняйте в реестре то, что можно изменить во время выполнения. Действительно, я думаю, что почти никогда не следует редактировать реестр для чего-то подобного, поскольку вы никогда не знаете, какие зависимости могут быть от параметра, который вы меняете. - person David-W-Fenton; 13.06.2011