Справка по строке подключения OleDB для файлов excel


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

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

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

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


ImportMixedTypes=Text;TypeGuessRows=0

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

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

1 18

1 ответ:

К сожалению, вы не можете установить 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, вместо нуля, если найдете импорт производительность должна быть ниже идеальной.