Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Excel - обработка большой таблицы

Страницы: 1
Excel - обработка большой таблицы
Кто-нибудь сталкивался с проблемой вставки данных или считывания большой таблицы Эксела? Например, нужно обновить значения большого кол-ва ячеек (~10000) и примечаний или считать все это в файл. Обычно, если делать все это по одной ячейке, в цикле, то тормозит очень сильно. У кого есть идеи, как ускорить такие вещи?
Accende lumen sensibus, infude ainorem corbidus!
Пока что пытаюсь сократить время за счет уменьшения кол-ва посылаемых данных, а также увеличения скорости работы со строками. Также помещаю данные в файл, а потом вставляю их аналогично csv.
Accende lumen sensibus, infude ainorem corbidus!
Ну, чтобы excell быстро прочел все наши данные большого труда не требуется, достаточно действительно только сохранить их (данные) в csv, а затем открыть файл в excel.
Изменено: Алексей Смирнов - 25.04.2010 14:20:02
Проблема еще в том, что нужно некоторым ячейкам присваивать цвет и т.п. А в случае с примечаниями, похоже, средств действительно ускорить нет.
Accende lumen sensibus, infude ainorem corbidus!
На сколько я знаю, excel поддерживает работу с диапазонами. То есть можно выделить несколько ячеек и изменить у них цвет или еще что-нибудь. В результате все изменения происходят быстрее чем если бы они производились для каждой ячейки.
Изменено: Алексей Смирнов - 25.04.2010 14:19:49
Алексей Смирнов,
Разве слово Execl пишется не с одной буквой "l" на конце? smile:)
Вы правы. Вообще, интересное это слово "excel". Google одинаково переводит "excel" и "excell".
Еще один человек посоветовал, что можно сделать доступ ко "внутренностям" Эксела с помощью C/C++, и тогда все будет быстро. Наверно, можно и с помощью Дельфи, но не очень понимаю, как это будет происходить, если макросы все пишутся на VBA, и его придется все равно использовать.
Accende lumen sensibus, infude ainorem corbidus!
Цитата
Алексей Смирнов пишет:
На сколько я знаю, excel поддерживает работу с диапазонами. То есть можно выделить несколько ячеек и изменить у них цвет или еще что-нибудь. В результате все изменения происходят быстрее чем если бы они производились для каждой ячейки.

Удалось ускорить похожим образом вставку данных на лист из файла. Считывание же данных из ячеек было довольно медленным из-за необходимости выполнять конкатенацию строк, сейчас оно ускорено. Проблема пока остается, но время снижено до 5-30 секунд для заполнения большой таблицы.
Accende lumen sensibus, infude ainorem corbidus!
Еще можно некоторыми способами быстро вставлять данные через ADO, но насчет примечаний не уверен - вряд ли их там получится быстро создать. Зато заполнение таблицы значениями идет быстро.
После долгих трудов всё-таки получилось уменьшить время работы с такими массивами. Считывание и обновление примечаний оказалось быстрее, чем заполнение ячеек по одной. Т.е., наиболее медленным являлось присваивание Cells(i,j).Value. Поэтому, при необходимости обновления содержимого ячеек сначала сохранялись нужные данные в файл в виде строки, а потом специальным кодом вставлялись данные на лист в виде массива. Это если кому-то понадобится разобраться с похожей проблемой. Сейчас время стало не более 5 сек для основных операций.
Accende lumen sensibus, infude ainorem corbidus!
Вот еще у меня проблема появилась: нужно для некоторых ячеек устанавливать специальный формат, которого нет в Экселе. Напр., из числа [11.111,16.111] делать [11.1,16.1]. При этом это значение надо будет где-то хранить и само исходное тоже (Value). Кто-нибудь по своему опыту может подсказать, где это лучше делать - в файле или в свойстве ячейки типа ID? Если в файле, то надо будет часто обращаться к файлам, если в ID, то оно тоже может быть медленным - пока не знаю, что быстрее и как лучше.
Может, у кого-то при работе с гридами разными была такая проблема - хранения чисел с примененными форматами?
Изменено: motorway11 - 24.05.2010 18:23:52
Accende lumen sensibus, infude ainorem corbidus!
Боюсь, тут действительно мало что поможет. Либо сохранять все это дело в csv, либо пользоваться такими медленными свойствами. Есть еще Validation, но там сложнее с ним работать
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)