Сравнение библиотек для работы с файлами Misrosoft Excel
Автор: Ольга Сосонных
Источник: Delphi Plus
Самым удобным, полным и хорошо документированным способом работы с файлами 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 на основе шаблонов, компоненты для работы с шаблонами. |
TMS Software
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):
- Документ readme.doc содержит описание архитектуры FlexCel и краткое описание каждого объекта (без детального описания свойств и методов).
- Документ "Using FlexCelReport" содержит подробное пошаговое руководство для разработчика, начинающего использовать FlexCel.
|
Производительность
Для сравнения производительности мы проведем несколько тестов записи файлов 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). Для того, чтобы их скомпилировать и запустить, Вам дополнительно потребуется получить и установить демо-версии рассматриваемых библиотек на сайтах их производителей.
Copyright © 2004 Ольга Сосонных Специально для Delphi Plus