Помогите с строкой подключения OleDB для файлов Excel - PullRequest
20 голосов
/ 29 декабря 2010

У меня проблема в том, что адаптер данных просматривает только первую строку в каждом столбце, чтобы определить тип данных. В моем случае первый столбец "SKU" - это числа для первых 500 строк, тогда я получаю SKU, которые представляют собой смешанные цифры и буквы. Таким образом, в итоге получается, что строки в столбце SKU остаются пустыми, но я по-прежнему получаю другую информацию для каждой строки столбца.

Я полагаю, что это строка подключения, которая контролирует, и с моими текущими настройками она должна работать, однако это не так.

Строка подключения:

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";


ImportMixedTypes=Text;TypeGuessRows=0

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

«Бандаж», который я надел на это, состоит в том, чтобы сделать первую строку в электронной таблице смесью букв и цифр и специально исключить эту строку в моем запросе.

1 Ответ

30 голосов
/ 12 января 2011

К сожалению, вы не можете установить ImportMixedTypes или TypeGuessRows из строки подключения, так как эти настройки определены в реестре. Для драйвера ACE OleDb они хранятся в

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

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

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;""";

Как только вы установите в реестре TypeGuessRows на 0 и ImportMixedTypes на Text, вы должны получить ожидаемое поведение. Однако вы можете рассмотреть возможность использования достаточно большого числа, такого как 1000, вместо нуля, если вы обнаружите, что производительность импорта ниже идеальной.

...