Библиотеки для формирования отчетов в среде программирования Lazarus

Для эффективного управления предприятием нужно иметь полное представление о его деятельности. Эффективную обработку огромных массивов разнообразных сведений с целью представления их в обобщенном и сопоставимом виде, пригодном для анализа и принятия управленческих решений могут обеспечить только отчеты. Отчеты представляют собой мощное и гибкое средство отбора, обобщения и группировки данных, содержащихся в информационной базе. Пользователь может не только распечатать отчет, но и работать с ним как с интерактивным документом — изменить его параметры, перестроить, сформировать дополнительный отчет на основании отдельных документов уже сформированного отчета.

Прежде чем приступить к созданию отчета, необходимо дать ответ на следующие вопросы:

  • с какой целью создается настоящий отчет, и чем он будет полезен?
  • какая информация, и из каких таблиц должна быть представлена в отчете?
  • отчет, какого вида вы предполагаете создать?
  • предполагается ли группировка данных?

Четкие ответы на по ставленные вопросы облегчат вашу работу при создании отчета.

После ответа на поставленные вопросы можно переходить к созданию самого отчета в среде программирования Lazarus.

Когда наступает необходимость экспортировать данные из программы в табличный процессор, можно воспользоваться компонентом OLE. Но могут возникнуть проблемы, если на машине не установлен MS Office excel / OpenOffice Calc.

Рассмотрим две библиотеки, которые позволяют быстро создать отчеты различных типов и не используют компоненты OLE.

Первая из них – ZEXMLSS. Эта библиотека, позволяет создавать и загружать файлы формата excel 2002/2003 XML (SpreadsheetML / XML Spreadsheet) БЕЗ использования MS Office или Open Office. Работает в Lazarus (проверено с Lazarus 0.9.28.2 и FPC 2.2.4 под Linux-ом и Windows XP).

Основные возможности:

  • Чтение/запись excel XML файлов в кодировках windows-1251, CP866, UTF-8, UTF-16 (Little Endian и Big End ian)
  • Возможность установить каждой ячейке свой стиль (цвет и толщину рамки, цвет и стиль заливки, шрифт и выравнивание)
  • Объединённые ячейки
  • Возможность устанавливать размер бумаги и отступы

На рисунке 1 приведена схема соответствия различных документов, использующих библиотеку ZEXMLSS при формировании отчетов.

158

Рисунок 1 - Схема соответствия различных документов, использующих библиотеку ZEXMLSS при формировании отчетов

Основные классы библиотеки ZEXMLSS:

  • TZEXMLSS - контейнер содержимого документа электронной таблицы
  • TZsspXMLWriter - пишет в XML
  • TZsspXMLReader - что-то вроде SAX парсера (может читать некоторые некорректные XML)

Вторая библиотека – FpSpreadsheet. FpSpreadsheet библиотека предо ставляет удобный способ создания и чтения табличных документов в различных форматах. Библиотека написана на очень гибкой основе, и поэтому её можно легко расширять поддержкой любого количества форматов.

В FPSpreadsheet поддерживаются два вида формул: строковый и RPN. Строковый вид записываются также как и в офисных приложениях, например, "ROUND (A1 + B1)", а RPN формулы записываются в обратной польской записи (Reverse Polish Notation (RPN)), например: A1, B1, Add, 0, ROUND

Нужно отметить, что библиотека FpSpreadsheet имеет встроенные процедуры ABS и ROUND.

ABS - возвращает абсолютное значение заданного числа. Принимает 1 аргумент. Пример: ABS (-1) = 1

ROUND - округляет число до заданного числа десятичных знаков. Принимает 2 аргумента, сначала округляемое число, а затем количество десятичных знаков. Второй аргумент по умолчанию равен нулю и может быть отрицательным.

Пример использования встроенной процедуры

// Write the formula E1 = ABS(A1)

SetLength(MyRPNFormula, 2);

MyRPNFormula[0].ElementKind := fekCell;

MyRPNFormula[0].Col := 0;

MyRPNFormula[0].Row := 0;

MyRPNFormula[1].ElementKind := fekABS;

MyWorksheet.WriteRPNFormula(0, 4, MyRPNFormula);

// Write the formula F1 = ROUND(A1, 0) SetLength(MyRPNFormula, 3);

MyRPNFormula[0].ElementKind := fekCell;

MyRPNFormula[0].Col := 0;

MyRPNFormula[0].Row := 0;

MyRPNFormula[1].ElementKind := fekNum;

MyRPNFormula[1].DoubleValue := 0.0;

MyRPNFormula[2].ElementKind := fekROUND;

MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);

Чтобы создать проект, который использует библиотеку fpspreadsheet, необходимо добавить пакет fpspreadsheet_pkg в ваш Lazarus проект или добавить корневой каталог fpspreadsheet в опциях вашего компилятора, если используется другая IDE.

FPSpreadsheet можно скачать с SourceForge, также можно воспользоваться программным обеспечением subversion, или следующей командой: svn c адреса https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus- ccr/components/fpspreadsheet fpspreadsheet

Ниже приводим таблицу текущее состояние поддерживаемых форматов библиотеки FPSpreadsheet.

Таблица 1 - Текущее состояние поддерживаемых форматов библиотеки FPSpreadsheet

Формат

Поддержка нескольких листов

Поддержка

Unicode

Чтение

Запись

Текст

Число

Строковая формула

RPN формула

Excel 2.x

Нет

Нет**

Работает

Работает

Работает

Работает

Не

реализован

о

Работает

Excel 3.0

Нет

Нет**

Не

реализован о

Не

реализован

о

Не

реализов ано

Не

реализован

о

Не

реализован

о

Не

реализова

но

Excel 4.0

Нет

Нет**

Не

реализован о

Не

реализован

о

Не

реализов ано

Не

реализован

о

Не

реализован

о

Не

реализова

но

Excel 5.0 (Excel 5.0 and 95)

Да

Нет**

Работает*

Работает

Работает

Работает

Не

реализован

о

Работает

Excel 8.0 (Excel 97, 2000, XP and 2003)

Да

Да

Работает*

Работает

Работает

Работает

Не

реализован о

Не

реализова

но

Microsoft

OOXML

Да

Да

Не

реализован о

Не

реализован о

Не

реализов ано

Не

реализован о

Не

реализован о

Не

реализова

но

Open

Documen

ŧ

Да

Да

Работает

Работает

Работает

Работает

Не

реализован

о

Не

реализова

но

Примечания: (*) Некоторые ячейки могут быть возвращены пустыми из-за отсутствия реализации некоторых числовых и строковых форматов.

(**) В форматах, не поддерживающих Unicode, данные сохраняются в виде ISO 8859-1. Обратите внимание, что при чтении/записи FPSpreadsheet предлагает использовать UTF-8, но эти данные будут преобразованы в ISO при чтении или записи на диск. Будьте осторожны - символы, которые не укладываются в ISO Latin 1, будут потеряны в этих операциях.

Полное представление о деятельности предприятия необходимо для эффективного управления им. Эффективную обработку огромных массивов разнообразной информации в обобщенном и сопоставимом виде, пригодном для анализа и принятия управленческих решений могут обеспечить только отчеты. Использование библиотек ZEXMLSS и FPSpreadsheet позволяет разработчикам программного обеспечения, работающих со средой программирования Lazarus, создавать довольно мощные отчеты, даже если на персональном компьютере не установлен MS Office excel/OpenOffice Calc.

 

Литература

  1. http://linux.ru
  2. http://www.vitaliy.org/Node/View/63
  3. http ∶//avemey. com/zexmlss/index. php
  4. http ://wiki. Iazarus. freepascal. org/FP Spreadsheet/ru
Год: 2012
Город: Костанай