|
Модераторы: MetalFan |
|
Dukalys |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.9.2010 Репутация: нет Всего: нет |
День добрый. Подскажите каким инструментом Delphi можно организовать поиск в Excel (2007), желательно с примером.
Поиск должен осуществляться ТОЛЬКО по столбцу A Excel, при этом, при нахождении нужного, необходимо записывать данные текущей строки из ячеек B, C в переменные/массив (неважно). Результатом поиска является МНОЖЕСТВО строк. Хорошо бы если результатом поиска являлись бы строки или конкретные ячейки A101 ... P.S. Перерыл кучу материала ( в том числе книг), нашёл следующее - Ссылка1 - поиск определяет только найдено (true) или ненайдено (false) - а хочется номер ячейки ( лучше строки) - чегото материального. Ссылка2 - поиск данных на листе, в конце интересный repeat until которого я непонимаю, может через него можно выйти на нужное мне. Ссылка3 - тоже поиск данных, который резко оканчивается Find().Activate; что этот активейт, куда он что возвращает, для меня загадка. На вашем форуме почитал темы интересные про работу с Excel, но тем с подробным решением данной задачи так и не нашёл. Это сообщение отредактировал(а) Dukalys - 6.9.2010, 20:55 |
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 5 Всего: 130 |
Ну, проходи циклом по листу и ищи, что нужно. Способ медленный, но верный.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
okkonst |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 5.9.2010 Где: Воронеж Репутация: нет Всего: 1 |
а еще лучше - запиши макрос, который бы делал то, что тебе нужно (имеется ввиду - нажми "запись макроса" и соверши нужные действия), а сгенеренный код транслируй в дельфи. Там же отличный поиск есть...
|
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 5 Всего: 130 |
Согласен, это ещё лучше: я сиё предположил, но не стал пока озвучивать. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Dukalys |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.9.2010 Репутация: нет Всего: нет |
Ребят спасиб. С макросами я ещё не работал, если честно то даже ммм не представляю что придётся делать. можете это описать как-то. как придётся транслировать ...
А что касается цикла с проверкой каждой ячейки совпадает ли значение (true) то это наверное долго - в файле Excel 200 000 строк. и перебирать в цикле и обращаться к каждой ячейке это жёстко. P.S. Возможно ли все данные их Excel как-то по-умному рассовать по массивам в Дельфи ? (получается 3 столбца(массива) of String по 200 000) так чтобы вначале программы это заняло секунд 15-20 или меньше. Мне кажется что потом в итоге это съэкономит кучу времени и сил. спасибо за ответы. Это сообщение отредактировал(а) Dukalys - 7.9.2010, 06:44 |
|||
|
||||
Albinos_x |
|
||||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
выделяется найденная ячейка координаты можно получить дав команды в стиле:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
Dukalys |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.9.2010 Репутация: нет Всего: нет |
Попробовал ...
Итого - не работает. подробнее: Выдержки из первоисточника (книги): 1. "Если задана область ячеек и получена ссылка на неё, то количество столбцов будет определяться свойством Count коллекции Columns объекта Range, а количество строк - свойством Count коллекции Rows объекта Range". Доступ ко всем строкам и столбцам листа рабочей книги предоставляют коллекции Rows и Columns объекта ActiveSheet - активного листа рабочей книги. 2. "Мы определились, что ячейка всегда определяется объектами Range или Cells" Такая многозначность + отсутствие в Delphi предввода методов, свойств (Excel. пусто) для работы с Excel меня загоняет в тупик.
Во всех эдитах значение = 1 (реальное расположение ПРАВИЛЬНО НАЙДЕННОЙ И ВЫДЕЛЕННОЙ ячейки = 'B3'=(2,3)) Методом подбора - получить какое либо свойство из FindRange (типа Row) так и не получилось. Выкладываю пример программы - теста, с которой работаю. за основу взята криво написанная (в том числе и мной) программа из нета и неудачно адаптирована под поиск координат ячейки. прога прикреплена. P.S. есть у когонить идеи по этому поводу ??? Я в нете коечто нарыл - Ссылко Похоже от туда можно коечто выдернуть, через 2 часика проверю и отпишусь. Это сообщение отредактировал(а) Dukalys - 8.9.2010, 13:28 Присоединённый файл ( Кол-во скачиваний: 8 ) pr138_1.zip 394,04 Kb |
|||
|
||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
сделай так, это самый простой вариант:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
Dukalys |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.9.2010 Репутация: нет Всего: нет |
Оргомное спасибо код работает !!! Ребят а вот смотрите заметил какую особенность при выполнении метода "Find" для Cells и для Range
Выделяет правильную ячейку 3,2
Выделяет 4 ячейку вместо третьей и по выше приведённых свойствам возвращает 4,2 ну наверно можно просто -1 делать от значения Row ? или это особенность какаято ? Это сообщение отредактировал(а) Dukalys - 8.9.2010, 14:59 |
||||||
|
|||||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
Это если запускать в любой последовательности??? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
Dukalys |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.9.2010 Репутация: нет Всего: нет |
Несовсем догоняю что имеете ввиду здесь про последовательность (начало поиска - с начала документа или конца ?). результат поиска с начала документа - искомой строки, ссылается на последующую строку, вродебы всё время ...
|
|||
|
||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
хм... у тебя в приложенном проекте, если не ошибаюсь, было 2 кнопки, где реализовано 2-мя способами поиск, вот я и спрашиваю в какой последовательности запускаешь...
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
Deeptown12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.6.2008 Репутация: нет Всего: нет |
|
|||
|
||||
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |