Чтение Excel, ADO, COM и COMSAFEARRAY.
Загрузка из Excel в BAS
Все нам отлично известен способ обработки Excel файла через COM соединение, но есть и другие способы обработки данных. Например «ADO», ActiveX Data Objects, позволяет представлять данные из разнообразных источников, а так же тип данных, такой как COMSafeArray, о нем достаточно обширная справка в синтаксис помощнике.
Цель этой темы сравнить 3 различных режима загрузки данных из Excel, двух разных файлов. В одном файле будет 4 строки и 7 колонок, не считая шапки, во втором 12000 строк и 7 колонок.
Что же начнем, первым будет файл из четырех строк и способ
ADO
Результаты вот:
Что же весьма не плохо, давайте теперь попробуем файл на 12000 строк, результат:
Быстро.
Теперь перейдем к способу через
COM Соединение
Начнем с маленького файла:
Результат:
ОГО! Вот такая у меня реакция ADO выполнился за 60 мсек., а COM за 2 972 мсек. Разница весьма большая. Что же будет на 12000 тысячах строк?
Результат:
Ну, что тут сказать. Все очень плохо
Но не будем спешить, у нас есть еще третий способ
COMSafeArray
Как можно понять из названия способ тоже работает по технологии COM. Суть способа в том чтобы выгрузить данные листа и загрузить по колонкам. Вот так:
Результат маленького файла:
Немного быстрей обычного COM способа, но до ADO все еще очень далеко. Осталось только проверить этот способ на файлике с 12000 строк. Зачем спросите Вы, тут и так все понятно. Вот тут и будет сюрприз
Обрабатываем файл и результат:
Вполовину быстрей, чем ADO. Почему так? В случае ADO мы сделали запрос к листу и получили набор данных, которые записали в таблицу, в случае COM мы перебирали строчка за строчкой, а в случае с COMSafeArray мы выгрузили лист по колонкам и так же по колонкам загрузили, в последнем случае количество строк не играло значительную роль. Какой способ использовать решать Вам.
Если у вас есть еще способы – делитесь, с удовольствием замеряем результаты.
С другими полезными темами вы можете ознакомиться в нашей базе знаний
Так же Вы можете ознакомиться с нашими модулями BAS
Так же, наша компания проводит обучение по курсам:
Обучение проводится в вечернее время, что позволит вам не отрываться от работы или обучения, практикующим программистом нашей компании.
Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20
Свяжитесь с нами
Если вы хотите получить больше информации, заполните эту форму. Мы свяжемся с вами в ближайшее время.