|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.04.2009, 15:37 | #1 |
Новичок
Джуниор
Регистрация: 16.07.2008
Сообщений: 2
|
Оптимизация обработки файлов
Есть прога обрабатывающая 2 файла эксель.
Берется значение из файла 1, исчется соответствие в файле 2 и возвращается в файл 1. Файлы порядка 3к позиций. Прога работает несколько часов. Как оптимизировать? Где самые большие задержки могут быть? |
30.04.2009, 15:41 | #2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
При правильном написании кода программа отработает максимум за 1 - 2 секунды. Цитата:
Выкладывайте файл с "прогой" - посмотрим, что можно сделать... |
||
30.04.2009, 16:54 | #3 |
Новичок
Джуниор
Регистрация: 16.07.2008
Сообщений: 2
|
Писалось а 5-ой делфе. Больше не умею
ВОбщем принцип работы проги: Берется код позиции №1 в первом файле (заданный столбик) Путем перебора ищет этот код во втором файле(в заданном столбике) Берет значение из соседнего столбика, преобразует по заданному алгоритму и возвращает в первый файл. Переходит к следующей позиции Последний раз редактировалось dinon; 30.04.2009 в 16:55. Причина: не дописал |
30.04.2009, 19:09 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Ваша программа работает долго из-за того, что для каждой строки обрабатываемого файла Вы производите поиск в другом файле, перебирая ячейки того файла в цикле.
Варианты решения: 1) Считываем данные с листов этих файлов в массивы (получая при этом 2 двумерных массива). Обрабатываем эти массивы, после чего записываем массив на лист. Скорость обработки файлов возрастёт в тысячи раз. 2) Запрашиваем пути к файлам, открываем обрабатываемый файл, в нужный столбец одной командой прописываем формулу (примерно так: ISheet_Catalog.Range['d2 : d3000'].FormulaLocal := '=ВПР(тут формула)'), запускаем пересчёт, затем заменяем формулы значенями (строкой типа ISheet_Catalog.Range['d2 : d3000'].Value := ISheet_Catalog.Range['d2 : d3000'].Value) 3) Отказываемся от программы. В обрабатываемый файл в нужные ячейки пишем формулу, ссылающуюся на второй файл. При открытии основного файла он сам обновит данные. 4) Реализуем всю функциональность средствами VBA PS: C синтаксисом Delphi незнаком, так что подправить программу не смогу. А зачем Вам нужна именно внешняя программа для обработки файлов? Чем Вас не устраивает обработка данных средствами Excel? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с программированием обработки файлов (Pascal) | Дима82 | Помощь студентам | 2 | 25.05.2008 13:05 |
Помогите с программированием операций обработки файлов(Pascal) | Дима82 | Помощь студентам | 11 | 24.05.2008 18:02 |
Программирование операций обработки файлов | Дима82 | Фриланс | 1 | 19.05.2008 13:57 |
Оптимизация | Terran | Общие вопросы Delphi | 3 | 03.05.2008 19:03 |
Макрос в Excel для обработки группы файлов | ad_sum | Microsoft Office Excel | 1 | 29.12.2007 16:56 |