Зачем так рано сдаваться-то?
Обнаружил два способа борьбы:
1. добавить во фрагмент ConnectionString "Extended Properties='Excel 8.0;HDR=Yes'" подстроку "IMEX=1", чтобы получилось "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'" (при этом как минимум одно из первых 8 значений должно быть текстом)
2. добавить ведущий апостроф (известный способ в Excel) в те ячейки первых 8 строк, которые выглядят как числовые ( 150300 => '150300 )
Далее, у меня получились следующие результаты исследования:
1. MAXSCANROWS при использовании из Аксапты у меня не почему-то не заработал

(т.е. всегда всё определяли первые 8 строк)
2. тип данных в конкретном поле ADO определяет по значениям в первых 8 строках (даже при MAXSCANROWS=1 и при MAXSCANROWS=16; и даже при MAXSCANROWS=0, когда по идее должны сканироваться все записи таблицы)
2.1. если в первых 8 строках 5 текстовых значений и 3 числовых, то тип поля принимается как ТЕКСТ
2.2. если в первых 8 строках 3 текстовых значений и 5 числовых, то тип поля принимается как ЧИСЛО
2.1. если в первых 8 строках 4 текстовых значений и 4 числовых, то тип поля принимается как ЧИСЛО
3. Если добавить параметр IMEX=1, то (опять-таки всё определяется по первым 8 строкам):
3.1. Если в первых 8 строках есть хотя бы одно текстовое значение, то тип поля принимается как ТЕКСТ (!)
3.2. Если в первых 8 строках есть ТОЛЬКО ЧИСЛОВЫЕ значения, то тип поля принимается как ЧИСЛО (даже если все последующие значения, начиная с 9-го являются текстом)
Подробности про IMEX=1, например,
здесь:
Цитата:
NOTE: Setting IMEX=1 tells the driver to use Import mode. In this state, the registry setting ImportMixedTypes=Text will be noticed. This forces mixed data to be converted to text. For this to work reliably, you may also have to modify the registry setting, TypeGuessRows=8. The ISAM driver by default looks at the first eight rows and from that sampling determines the datatype. If this eight row sampling is all numeric, then setting IMEX=1 will not convert the default datatype to Text; it will remain numeric.