|
|
|
|
#1 |
|
Участник
|
Цитата:
Сообщение от Gustav
По классу - пара пожеланий. Первое. Я бы объединил методы getFieldValue и getNamedFieldValue в один универсальный getFieldValue. И плюс к этому нумерацию полей начал бы с единицы, невзирая на то, что в самом ADO первое поле - 0. Понимаю, что вопрос концептуально-идеологический. Я сам метался между 0 и 1, но в конце концов остановился на 1. Ну и что, что лишняя операция вычитания, зато получается нормальный наглядный натуральный ряд (блин, ненавижу циклы от 0 до Count-1).
Я тоже сначала думал, как делать индексацию полей и по номерам, и по названиям колонок, но чего-то совсем забыл про anytype Кроме того, нумерация начиная с 1 применительно к Excel, конечно, куда удобнее - в нем ведь тоже можно включить нумерацию колонок ("стиль ссылок R1C1"), а там она начинается как раз с 1.Цитата:
У меня в "инструментальном ящичке" в некотором классе есть противоположный метод - setFieldValue, привожу его в качестве подспорья-иллюстрации. Воспользуйтесь при желании.
PHP код:
PHP код:
Цитата:
Второе пожелание. В методе getRecordCount я бы не торопился возвращать -1 в случае невозможности определения кол-ва записей через ADO. Всё же класс посвящен Excel'ю, а он нам не чужой. Можно, например, воспользоваться в Excel методом Range.CurrentRegion и далее Rows.Count минус первая заголовочная строка (если она есть). Ну, как-то так...
PHP код:
В общем, мне кажется, идеологически правильнее использовать для определения количества записей средства ADO, а не обходные маневры с использованием COM-интерфейсов Excel. Во вложении - тестовый job, использованный для измерения скорости. Обновленный класс можно найти в первом сообщении темы. Последний раз редактировалось gl00mie; 08.01.2007 в 23:45. |
|
|
|
| За это сообщение автора поблагодарили: blokva (2), Hans (1), konopello (1), demon46 (1). | |
|
|
#2 |
|
Moderator
|
Цитата:
Это означает, что ПРИ ЖЕЛАНИИ в случае больших списков полей можно написать так: Код: setFieldValue('НужноеПоле' , valNeed , 1 );
setFieldValue('ОченьНужноеПоле' , valVeryNeed , 2 );
..............................................................
setFieldValue('НаинужнейшееПоле' , valNeedest , 56 );
setFieldValue('НеТакоеВажноеПоле', valNotSoImportant , 57 );Код: setFieldValue('НужноеПоле' , valNeed ); // 1
setFieldValue('ОченьНужноеПоле' , valVeryNeed ); // 2
..............................................................
setFieldValue('НаинужнейшееПоле' , valNeedest ); // 56
setFieldValue('НеТакоеВажноеПоле', valNotSoImportant ); // 57
|
|
|