31.01.2007, 15:25 | #11 |
Участник
|
Цитата:
Сообщение от kashperuk
Провел исследование:
1. Установил HDR=No в строке подключения, в результате получил такую строку: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1'" При этом первая строка не прочиталась. (То есть неверно сработало) 2. Установил HDR=No и FirstRowHasNames=0 в строке подключения, в результате получил такую строку: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=No;FirstRowHasNames=0;IMEX=1'" При этом первая строка прочиталась. (То есть верно сработало) 3. Убрал HDR=No из предыдущего варианта, в результате получил такую строку: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;FirstRowHasNames=0;IMEX=1'" При этом первая строка не прочиталась. (То есть неверно сработало) 4. Вернул на место. Получил строку, как в варианте 2. НО, при этом первая строка не прочиталась. (То есть неверно сработало) Тут я уже начал задумываться, а не случайным ли образом выдается этот параметр 5. Убрал FirstRowHasNames=0 и вернул HDR=Yes, в результате получил строку: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'" А теперь внимание!: Первая строка НЕ прочиталась (То есть верно сработало, точнее, сработало то неверно, но с требуемым результатом)
1) По умолчанию используется значение HDR=Yes; 2) Значение FirstRowHasNames вообще ни на что не влияет. Исследуемая система: MS Windows Server 2003 SP1 MS Office Excel 2003 SP2 Rus MDAC 2.81 (вроде он штатно идет с w2k3, по крайней мере, файлы odbc*.dll версии 3.526.1830.0) Цитата:
Попробовав еще несколько различных комбинаций установил, что он этих двух параметров результат ЗАВИСИТ, но как именно - не установлено.
PS. В ходе раскопок обнаружилось, по какому числу строк определяются типы колонок: HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows, по умолчанию стоит восемь, как и написано в документации (раздел «A Caution about Mixed Data Types»). Впрочем, там же упоминается параметр MaxScanRows, которым это можно контролировать: установить значения от 1 до 16, либо поставить 0 для сканирования всех строк. Последний раз редактировалось gl00mie; 31.01.2007 в 16:01. |
|
|
За это сообщение автора поблагодарили: Logger (3). |