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