Изменения значений при импорте из Excel с C # / OLEDB - PullRequest
1 голос
/ 16 сентября 2010

Я пытаюсь импортировать некоторые данные из электронной таблицы Excel в мое приложение C # с помощью OleDB. Я использую стандартную строку подключения с параметрами IMEX=1,HDR=YES

Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = {0}; Расширенный Свойства = "Excel 12.0; HDR = ДА; IMEX = 1"

У меня есть столбец, где значения в основном текст: TRUE или FALSE. На полпути внизу есть пара ценностей ПУСТО. Когда происходит импорт, значения BLANK заменяются пустыми строками. Вероятно, это связано с тем, что OleDB определил тип данных столбца как булевский и не импортирует не-булевы значения, например BLANK.

Я попытался найти решение в этом ответе , но оно не сработало. Даже если я предварительно создал DataTable и установил, чтобы все его столбцы имели тип данных string, значения BLANK по-прежнему удаляются.

Я попытался взломать ключ реестра, предложенный в том же вопросе, но безрезультатно.

Есть ли какое-либо решение? Или мне придется попробовать использовать COM? У нас нет бюджета для SpreadsheetGear, и я не могу использовать excellibrary , потому что я в основном имею дело с файлами .xlsx.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 февраля 2013

Я знаю, что опоздал на три года, но это может кому-то помочь.Вся заслуга принадлежит Эндрю Гаррисону , который разместил свой ответ здесь .Необходимо изменить параметр реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\

Измените TypeGuessRows на 0 и ImportMixedTypes на Text под этим ключом.

ACE сканирует первые 8 строк и пытаетсяугадать форматы столбцов.Все остальное, что не соответствует формату, впоследствии возвращается как NULL.Установка TypeGuessRow в 0 заставляет драйвер сканировать все строки, чтобы определить формат (конечно, есть некоторое снижение производительности).ImportMixedTypes = text указывает, что столбцы со смешанным форматом, как в вашем случае, должны быть импортированы как текст.

0 голосов
/ 29 марта 2011

Попробуйте сохранить файл Excel в формате CSV и обработать его.

...