2015-07-20 4 views
1

OleDb предлагает удобные возможности для чтения файлов excel. Одним из ограничений для меня, похоже, является случай, когда столбец имеет разные типы данных, которые не могут быть конвертируемыми из строки в другие типы данных однозначно. Примером может служить столбец со строковыми записями, номерами и позициями Date.Чтение листа Excel с помощью OleDb с полями String, Number и Date в том же столбце

Действия TryParse могут быть успешными как для Double, так и для DateTime, не давая однозначного типа данных.

Приведенная ниже простая таблица дает пример.

enter image description here

Мой вопрос: можно ли обрабатывать этот случай с OleDb вообще? Если да, то как? Если нет, то какие другие возможности существуют, кроме как из чтения файла Excel с помощью COM Interop?

+0

Хммм, просто думая о логике, я могу предложить вам просто попробовать бросить их на свидание в первый раз, если это не сработает, попробуйте наложить на номер, чем если бы оно не было, то это строка. Не чист, даже не близок, но он будет работать. –

+0

Извините, но это не сработает, потому что BOTH casts будет успешным в поле даты. Я хочу знать, есть ли у меня дата или номер в этом поле. – josh

ответ

1

Насколько я знаю, OleDb попытается выяснить тип данных для каждого столбца и в этом случае сбой.

Если нет, то какие другие возможности существуют, кроме как чтения файла Excel с помощью COM Interop?

EPPlus - это доступное с открытым исходным кодом решение .NET (без COM), доступное через NuGet для чтения файлов .XLSX. Несколько лет назад я перешел из OleDb в EPPlus для своих проектов, которые обрабатывают данные Excel.

+0

Объявление 1. Нет, OleDb возвращает строковый тип данных, если вы помещаете IMEX = 1 в строку подключения. Ad 2. спасибо за подсказку, я попробую. – josh

+0

Я пробовал EPPlus, и это кажется очень хорошей библиотекой. Он правильно возвращает типы данных всех полей! Спасибо за ценный намек !. Upvoted! – josh

+0

Рад, что это сработало для вас. –

Смежные вопросы