Чтение Excel, ADO, COM и COMSAFEARRAY.

Эта статья была обновлена 02 Августа 2022, Вт
Оглавление
  1. Загрузка из Excel в BAS
  2. ADO
  3. COM Соединение
  4. COMSafeArray

Загрузка из Excel в BAS

Все нам отлично известен способ обработки Excel файла через COM соединение, но есть и другие способы обработки данных. Например «ADO»ActiveX Data Objects, позволяет представлять данные из разнообразных источников, а так же тип данных, такой как COMSafeArray, о нем достаточно обширная справка в синтаксис помощнике.

Цель этой темы сравнить 3 различных режима загрузки данных из Excel, двух разных файлов. В одном файле будет 4 строки и 7 колонок, не считая шапки, во втором 12000 строк и 7 колонок. 

Что же начнем, первым будет файл из четырех строк и способ 

ADO

Загрузка данных в BAS 

Результаты вот:

Результат загрузки данных в BAS

Что же весьма не плохо, давайте теперь попробуем файл на 12000 строк, результат: 

Сообщение о загрузке данных в BAS 

Быстро.

Теперь перейдем к способу через 

COM Соединение

Начнем с маленького файла:

COM: Загрузка данных в BAS 

Результат:

Результат Загрузка данных в BAS (Com)  

ОГО! Вот такая у меня реакция ADO выполнился за 60 мсек., а COM за 2 972 мсек. Разница весьма большая. Что же будет на 12000 тысячах строк?

Результат:

Загрузка данных в BAS 

Ну, что тут сказать. Все очень плохо

Но не будем спешить, у нас есть еще третий способ

COMSafeArray

Как можно понять из названия способ тоже работает по технологии COM. Суть способа в том чтобы выгрузить данные листа и загрузить по колонкам. Вот так:

Загрузка данных в BAS 

Результат маленького файла:

Загрузка данных в BAS 

Немного быстрей обычного COM способа, но до ADO все еще очень далеко. Осталось только проверить этот способ на файлике с 12000 строк. Зачем спросите Вы, тут и так все понятно. Вот тут и будет сюрприз

Обрабатываем файл и результат:

Загрузка данных в BAS 

Вполовину быстрей, чем ADO. Почему так? В случае ADO мы сделали запрос к листу и получили набор данных, которые записали в таблицу, в случае COM мы перебирали строчка за строчкой, а в случае с COMSafeArray мы выгрузили лист по колонкам и так же по колонкам загрузили, в последнем случае количество строк не играло значительную роль. Какой способ использовать решать Вам.

Если у вас есть еще способы – делитесь, с удовольствием замеряем результаты. 

С другими полезными темами вы можете ознакомиться в нашей базе знаний

Так же Вы можете ознакомиться с нашими модулями BAS

Так же, наша компания проводит обучение по курсам:

 Обучение проводится в вечернее время, что позволит вам не отрываться от работы или обучения, практикующим программистом нашей компании.

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20

( 5 )
Комментарии
Пока нет комментариев
Написать комментарий

Свяжитесь с нами

Если вы хотите получить больше информации, заполните эту форму. Мы свяжемся с вами в ближайшее время.

(073) 090-70-20 (095) 090-70-20 (068) 090-70-20 info@finsoft.ua