Несоответствие типов данных OleDbDataAdapter с использованием Jet - PullRequest
3 голосов
/ 09 июня 2011

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

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

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

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

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

1 Ответ

3 голосов
/ 09 июня 2011

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

...