Порівняння бібліотек для роботи із файлами Misrosoft Excel

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Порівняння бібліотек для роботи із файлами Misrosoft Excel

Найзручнішим, повним та добре документованим способом роботи з файлами MS Excel є використання OLE Automation із Microsoft Excel. Єдиний його недолік - низька швидкість, тому цей спосіб є неприйнятним для великих обсягів даних. Виникає необхідність використовувати бібліотеки, які працюють із файлами безпосередньо, і швидкість є основною характеристикою даного класу продуктів.

У цій статті ми розглянемо та порівняємо кілька бібліотек для Borland Delphi, які надають розробникам можливість працювати з файлами Microsoft Excel безпосередньо без використання OLE Automation і самого Microsoft Excel.

Перерахуємо бібліотеки, які ми розглядатимемо, і наведемо їх короткий опис.

НазваОписВиробник та сайт WWW
TXLSFile v.3.1Бібліотека невізуальних класів для читання та запису файлів MS Excel додатково включає в себе набір візуальних компонентів для експорту даних з db-aware компонентів у файли MS Excel.SM Software http://sm-software.com
XLSReadWriteIIБібліотека візуальних і невізуальних класів для читання та запису файлів MS Excel, додатково включає компоненти для експорту даних з dataset у файли MS Excel і експорту з файлу MS Excel в HTML.Axolot http://axolot.com
FlexCell v.2.6.7Генератор звітів, реалізований у вигляді візуальних компонентів. Містить компоненти формування звітів у файли MS Excel з урахуванням шаблонів, компоненти до роботи з шаблонами.TMSSoftware http://www.tmssoftware.com

Ми розглянемо ці бібліотеки як з точки зору продуктивності, так і для зручності використання для розробника.

Зручність використання для розробника

Для того щоб оцінити зручність використання продуктів для розробника, ми розглянемо такі параметри:

  • Архітектура
  • Наявність та якість документації

Архітектура

БібліотекаОпис архітектури
TXLSFile v.3.1Набір класів прямого доступу до файлів MS Excel. Проста ієрархія об'єктів повністю позбавляє користувача необхідності знати внутрішній пристрій файлу.
XLSReadWriteIIНабір класів прямого доступу до файлів MS Excel. Потрібні додаткові дії під час запису файлу. Наприклад, перед записом комірок потрібно заздалегідь знати всі можливі формати комірок, які будуть використовуватися (формат комірки включає колір тексту і фону, параметри шрифту, параметри кордонів, вирівнювання і т.д.), і додати їх в таблицю форматів. При записі осередків для кожного осередку потрібно вказати номер формату з таблиці форматів.
FlexCel v.2.6.7FlexCel – це генератор звітів, а не засіб прямого доступу до файлів MS Excel. Для того, щоб записати дані у файл MS Excel, потрібно попередньо створити файл-шаблон, задати в ньому поля, а потім реалізувати обробники подій для компонентів.

Наявність та якість документації

БібліотекаВідомості про документацію
TXLSFile v.3.1Один документ у форматі CHM. Включає короткий опис можливостей і довідник (Programmer's Reference) покласи бібліотеки. Для кожного класу описані його властивості та методи. Містить приклади коду для кожного класу.
XLSReadWriteIIОдин документ у форматі HLP. Включає короткий опис можливостей і довідник (Programmer's Reference) за класами бібліотеки. Для кожного класу описані його властивості та методи. Не містить прикладів.
FlexCel v.2.6.7Набір документів у форматі MS Word (DOC):
  • Документ readme.doc містить опис архітектури FlexCel та короткий опис кожного об'єкта (без детального опису властивостей та методів).
  • Документ "Using FlexCelReport" містить докладний покроковий посібник для розробника, який починає використовувати FlexCel.

Продуктивність

Для порівняння продуктивності ми проведемо кілька тестів для запису файлів MS Excel.

Спочатку наведемо деякі відомості про внутрішній формат файлу MS Excel, які знадобляться нам під час аналізу результатів тестів. У файлі MS Excel усі рядкові значення осередків зберігаються у таблиці рядків, у своїй осередки містять лише покажчики на елементи таблиці рядків. У таблиці рядків зібрані унікальні рядкові значення осередків (наприклад, якщо всі текстові осередки в робочій книзі містять одне й те саме значення, у таблиці рядків буде один елемент). Одна з важливих завдань під час запису файлу MS Excel - швидко побудувати таблицю рядків.

При записі файлу MS Excel бібліотеки виконують два види дій - аналіз та підготовка даних до запису та безпосередньо запис у файл. Аналіз даних, зокрема, включає створення таблиці рядків.

Платформа для тестування

CPU1800 MHz
RAM256 Mb
OSWindows 2000 Server

Тест 1 - велике число осередків з однаковим рядковим значенням

Заповнимо 50000 осередків однаковим рядковим значенням. Цей тест показує швидкість запису даних у файл. Оскільки всі осередки містять рядкове однакове значення, таблиця рядків тут будується швидко. Час аналізу та підготовки даних у разі не істотно впливає результат.

БібліотекаСередній результат тестів (у секундах)
TXLSFile v.3.11,031
XLSReadWriteII0,531
FlexCel v.2.6.72,453
misrosoft

Тест 2 - велика кількість осередків з різними випадковими рядковими значеннями

Заповнимо 50000 осередків різними рядками, що складаються з набору випадкових символів, і мають довжину від 10 до 60 символів. Цей тест показує швидкість побудови таблиці рядків. Чим більше різних текстових значень у файлі MS Excel, який потрібно створити, тим важливішим є цей показник.

БібліотекаСередній результат тестів (у секундах)
TXLSFile v.3.12,033
XLSReadWriteII125,130
FlexCel v.2.6.710,440
роботи

Тест 3 - велика кількість осередків з різними випадковими числами

Заповнимо 50000 осередків різними випадковими числами. Цей тест, як і тест 1, показує швидкість запису даних у файл. Оскільки комірки не містять рядкових значень, таблиця рядків тут буде порожня. Час аналізу та підготовки даних у разі не істотно впливає результат.

БібліотекаСередній результат тестів (у секундах)
TXLSFile v.3.10,801
XLSReadWriteII0,510
FlexCel v.2.6.72,070
файлами

Тест 4 - велика кількість осередків з різнорідними даними

Цей тест моделює запис типового файлу MS Excel, що містить рядкові значення, і числа. Візьмемо завдання, яке виконує демо-додаток StressTest із бібліотеки FlexCel. Потрібно провести експорт 6000 рядків, кожен з яких містить 30 стовпців - всього 180000 осередків. При цьому в 2 стовпцях будуть утримуватися різні рядки, що складаються з набору випадкових символів і мають довжину від 10 до 60 символів. У чотирьох інших шпальтах будуть утримуватися постійні строкові значення. Інші стовпці заповнимо випадковими цілими числами.

БібліотекаСередній результат тестів (у секундах)
TXLSFile v.3.13,77
XLSReadWriteII8,98
FlexCel v.2.6.75,09
файлами

Бажаючі можуть завантажити вихідні тексти тестових програм (8.59K). Для того, щоб їх скомпілювати і запустити, Вам додатково потрібно отримати і встановити демо-версії бібліотек, що розглядаються на сайтах їх виробників.