Читання Excel, ADO, COM і COMSAFEARRAY.

Ця стаття була оновлена 02 Серпня 2022, Вт
Зміст
  1. Завантаження з Excel в BAS
  2. ADO
  3. СOM з'єднання
  4. COMSafeArray

Завантаження з Excel в BAS

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

Мета цієї теми порівняти 3 різних режиму завантаження даних з Excel, двох різних файлів. В одному файлі буде 4 рядки і 7 колонок, не рахуючи шапки, у другому 12000 рядків і 7 колонок.

Що ж почнемо, першим буде файл з чотирьох рядків і спосіб

ADO

ADO: Завантаження даних у BAS 

Результати ось:

ADO: Завантаження даних у BAS

Що ж вельми не погано, давайте тепер спробуємо файл на 12000 рядків, результат:

ADO: Завантаження даних у BAS 

Швидко.

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

СOM з'єднання

Почнемо з маленького файлу:

COM: Завантаження даних у BAS 

Результат:

COM: Завантаження даних у BAS  

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

результат:

COM: Завантаження даних у 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