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