Порівняння бібліотек для роботи із файлами 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.7 | FlexCel – це генератор звітів, а не засіб прямого доступу до файлів 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):
|
Продуктивність
Для порівняння продуктивності ми проведемо кілька тестів для запису файлів MS Excel.
Спочатку наведемо деякі відомості про внутрішній формат файлу MS Excel, які знадобляться нам під час аналізу результатів тестів. У файлі MS Excel усі рядкові значення осередків зберігаються у таблиці рядків, у своїй осередки містять лише покажчики на елементи таблиці рядків. У таблиці рядків зібрані унікальні рядкові значення осередків (наприклад, якщо всі текстові осередки в робочій книзі містять одне й те саме значення, у таблиці рядків буде один елемент). Одна з важливих завдань під час запису файлу MS Excel - швидко побудувати таблицю рядків.
При записі файлу MS Excel бібліотеки виконують два види дій - аналіз та підготовка даних до запису та безпосередньо запис у файл. Аналіз даних, зокрема, включає створення таблиці рядків.
Платформа для тестування
| CPU | 1800 MHz |
| RAM | 256 Mb |
| OS | Windows 2000 Server |
Тест 1 - велике число осередків з однаковим рядковим значенням
Заповнимо 50000 осередків однаковим рядковим значенням. Цей тест показує швидкість запису даних у файл. Оскільки всі осередки містять рядкове однакове значення, таблиця рядків тут будується швидко. Час аналізу та підготовки даних у разі не істотно впливає результат.
| Бібліотека | Середній результат тестів (у секундах) |
| TXLSFile v.3.1 | 1,031 |
| XLSReadWriteII | 0,531 |
| FlexCel v.2.6.7 | 2,453 |

Тест 2 - велика кількість осередків з різними випадковими рядковими значеннями
Заповнимо 50000 осередків різними рядками, що складаються з набору випадкових символів, і мають довжину від 10 до 60 символів. Цей тест показує швидкість побудови таблиці рядків. Чим більше різних текстових значень у файлі MS Excel, який потрібно створити, тим важливішим є цей показник.
| Бібліотека | Середній результат тестів (у секундах) |
| TXLSFile v.3.1 | 2,033 |
| XLSReadWriteII | 125,130 |
| FlexCel v.2.6.7 | 10,440 |

Тест 3 - велика кількість осередків з різними випадковими числами
Заповнимо 50000 осередків різними випадковими числами. Цей тест, як і тест 1, показує швидкість запису даних у файл. Оскільки комірки не містять рядкових значень, таблиця рядків тут буде порожня. Час аналізу та підготовки даних у разі не істотно впливає результат.
| Бібліотека | Середній результат тестів (у секундах) |
| TXLSFile v.3.1 | 0,801 |
| XLSReadWriteII | 0,510 |
| FlexCel v.2.6.7 | 2,070 |

Тест 4 - велика кількість осередків з різнорідними даними
Цей тест моделює запис типового файлу MS Excel, що містить рядкові значення, і числа. Візьмемо завдання, яке виконує демо-додаток StressTest із бібліотеки FlexCel. Потрібно провести експорт 6000 рядків, кожен з яких містить 30 стовпців - всього 180000 осередків. При цьому в 2 стовпцях будуть утримуватися різні рядки, що складаються з набору випадкових символів і мають довжину від 10 до 60 символів. У чотирьох інших шпальтах будуть утримуватися постійні строкові значення. Інші стовпці заповнимо випадковими цілими числами.
| Бібліотека | Середній результат тестів (у секундах) |
| TXLSFile v.3.1 | 3,77 |
| XLSReadWriteII | 8,98 |
| FlexCel v.2.6.7 | 5,09 |

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