C # проблема чтения текста из Excel - PullRequest
1 голос
/ 14 сентября 2011

Я пытался прочитать файл Excel, используя OLEDB.Я могу правильно прочитать целые числа, но проблема возникает, когда я хочу прочитать текст.

Я также попробовал IMEX = 1, но он не работал!

Вот мой пример кода:

connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;IMEX=1;HDR=Yes'");

adapter = new OleDbDataAdapter("SELECT * FROM [" + sheet + "$]", connectionString);

DataSet data= new DataSet();
adapter.Fill(data);

Ответы [ 4 ]

0 голосов

У меня была похожая проблема при чтении .XLSX, и вот что я указал в строке подключения, и это сработало.

connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + @";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""";

0 голосов
/ 14 сентября 2011

use

connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + @";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""";

Это должно помочь при чтении, но будьте осторожны, если хотите писать - IMEX = 1 говорит, что это режим импорта, а запись с этим параметром дает непредсказуемые результаты.

0 голосов
/ 05 сентября 2013

Попробуйте вставить 5 фиктивных строк в первые 5 строк вашего листа Excel.Таким образом, все последовательные строки будут идентифицированы как строки.Вы можете в дальнейшем сделать ваши преобразования типов данных.Затем удалите 5 фиктивных строк в коде.

0 голосов
/ 14 сентября 2011

Это может помочь, хотя я не сталкивался с этой проблемой до установки IMEX = 1

Установка IMEX = 1 указывает драйверу использовать режим импорта.В этом состоянии будет замечен параметр реестра ImportMixedTypes = Text.Это заставляет смешанные данные быть преобразованы в текст.Чтобы это работало надежно, вам также может потребоваться изменить параметр реестра, TypeGuessRows = 8.Драйвер ISAM по умолчанию просматривает первые восемь строк и по этой выборке определяет тип данных.Если выборка из восьми строк полностью числовая, то установка IMEX = 1 не преобразует тип данных по умолчанию в текстовый;это останется числовым.

Вы должны быть осторожны, чтобы IMEX = 1 не использовался без разбора.Это режим ИМПОРТ, поэтому результаты могут быть непредсказуемыми, если вы попытаетесь добавить или обновить данные в этом режиме.

Возможные настройки IMEX: 0 - режим экспорта, 1 - режим импорта, 2 - режим связи (возможности полного обновления)

http://support.microsoft.com/kb/194124

.
...