Читання Excel, ADO, COM і COMSAFEARRAY.
Завантаження з Excel в BAS
Все нам добре відомий спосіб обробки Excel файлу через COM з'єднання, але є й інші способи обробки даних. Наприклад «ADO», ActiveX Data Objects, дозволяє представляти дані з різноманітних джерел, а так же тип даних, такий як COMSafeArray, про нього досить велика довідка в синтаксис помічника.
Мета цієї теми порівняти 3 різних режиму завантаження даних з Excel, двох різних файлів. В одному файлі буде 4 рядки і 7 колонок, не рахуючи шапки, у другому 12000 рядків і 7 колонок.
Що ж почнемо, першим буде файл з чотирьох рядків і спосіб
ADO
Результати ось:
Що ж вельми не погано, давайте тепер спробуємо файл на 12000 рядків, результат:
Швидко.
Тепер перейдемо до способу через
СOM з'єднання
Почнемо з маленького файлу:
Результат:
ОГО! Ось така у мене реакція 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
Зв'яжіться з нами
Якщо ви хочете отримати більше інформації, заповніть цю форму. Ми зв'яжемося з вами найближчим часом.