Страница: 1 |
Страница: 1 |
Вопрос: Как ускорить чтение из Excel
Добавлено: 07.07.05 10:32
Автор вопроса:
Бзымянный чуловек 26
Из внешней программы (VB .NET) читается из листа EXcel следующим образом
Xls = CreateObject("Excel.Application")
oXls.Workbooks.Open(TextBox1.Text)
for i = 1 to j
...= oXls.Cells.Range("a" & CStr(i)).Formula
next i
j что-то около 20000
и лист считывается около 10 минут!
как ускорить чтение?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 07.07.05 11:19
Должны быть какие нибудь команды типа Выгрузить. Поищи в хелпе.
Номер ответа: 2
Автор ответа: Дмит
Вопросов: 11
Ответов: 160
Web-сайт:
Профиль | | #2
Добавлено: 07.07.05 23:41
Читай сразу в массив variant:
Dim Mass As Variant
Mass = oXls.Cells.Range("A1:A20"
Номер ответа: 3
Автор ответа: mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 14.07.05 13:03
CyRax, как по-твоему ускорится его программа путём Выгрузить!? Глупости говоришь!
= oXls.Cells(i,1).Formula
так одной строковой операцией меньше, не находите?
Да, Дмит, в массив считать - это хорошо. Тогда уж не в Variant, а в строковый, ведь явно нужны формулы, а не сам диапазон, а это строки..
Видел пример, который разгонял чтение из XL за счёт использования коллекций. Точно суть не помню, поэтому врать не стану..
Номер ответа: 4
Автор ответа: mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 14.07.05 13:50
Синтаксическая поправочка..
Dim Mass() As Variant
Mass = oXls.Cells.Range("A1:A20000"
Номер ответа: 5
Автор ответа: CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 14.07.05 15:02
В 1С-ке такой метод есть при работе с таблицами. Думал и в VBA подобное имеется.
Номер ответа: 6
Автор ответа: someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #6
Добавлено: 14.07.05 16:07
[OFF] нет, безымянный ник все же неудобен тем что Павлу некогда доискаться до ссылки на профиль и черепок влепить
автор, смени ник![/OFF]
Номер ответа: 7
Автор ответа: Дмит
Вопросов: 11
Ответов: 160
Web-сайт:
Профиль | | #7
Добавлено: 17.07.05 13:35
mc-black
Вариант - Dim Mass As Variant
считаю лутше, т.к. создаётся одна переменная (в которой может быть и массив), а не массив переменных variant.
Впрочем всё зависит от дальнейшего кода