31.01.2007, 15:25
|
#29
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Цитата:
Сообщение от 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' (так и задумано)
- 1-я строка не читается при 'HDR=Yes;FirstRowHasNames=1' (так и задумано)
- 1-я строка не читается при 'HDR=Yes;FirstRowHasNames=0' (HDR, видимо, главнее)
- 1-я строка не читается при 'FirstRowHasNames=1' (так и задумано)
- 1-я строка не читается при 'FirstRowHasNames=0' (no comments)
- 1-я строка читается при 'HDR=No' (так и задумано, доки не врут!)
- 1-я строка читается при 'HDR=No;FirstRowHasNames=0' (так и задумано)
- 1-я строка читается при 'HDR=No;FirstRowHasNames=1' (HDR, видимо, главнее)
Таким образом, можно сделать выводы, что при доступе к листам книг Excel через Jet OLEDB:
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)
Цитата:
Попробовав еще несколько различных комбинаций установил, что он этих двух параметров результат ЗАВИСИТ, но как именно - не установлено.
Hint: после изменения макроса имеет смысл не просто сохранить classDeclaration, но и перекомпилировать весь класс (ну или метод, где этот макрос используется), а то есть вероятность, что новое значение макроса не подхватится
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). |