Создание файла Open Documents Spreadsheet из Delphi / C++Builder / Lazarus

03.08.2020

Краткая справка по форматам ODS и ODF

ODS – это открытый формат для электронных таблиц, выполненных в соответствии со стандартом OpenDocument Format (ODF). Формат распространяется на бесплатной основе и использует нормативы Международной организации по стандартизации. Стандарт был разработан индустриальным сообществом OASIS и основан на XML-формате. 1 мая 2006 года принят как международный стандарт ISO/IEC 26300. 21 декабря 2010 года ODF принят как стандарт РФ ГОСТ Р ИСО/МЭК 26300-2010 "Информационная технология. Формат Open Document для офисных приложений (OpenDocument) v1.0". Многие государства приняли ODF в качестве государственного стандарта.

Электронные таблицы ODF (одна из разновидностей ODS) являются простыми файловыми объектами на интерактивной основе, используемыми для анализа, организации и хранения всевозможных разновидностей данных на базе таблиц.

ODS-ресурсы можно открывать любым современным офисным пакетом,OpenOffice и LibreOffice Suite и MS Office (начиная с 2007 года).

C 2014 года в веб-приложениях Google Docs, Sheets и Slides появилась поддержка стандарта ODF. Теперь можно открывать, редактировать и сохранять файлы с расширениями .odt (текстовые документы), .ods (электронные таблицы) и .odp (презентации). На телефонах и планшетах под управлением Android наиболее полная поддержка файлов ods реализована в программе AndrOpen Office.

Каждый документ ODF представляет собой архив zip, поэтому, чтобы проникнуть внутрь этого документа, достаточно переименовать расширение документа на zip и открыть этот архив любым zip-архиватором. После чего мы увидим, как минимум, пять xml-файлов и несколько каталогов.

В этих xml-файлах, кроме непосредственного содержания документа, имеются так называемые метаданные. Это дополнительная информация, которая позволяет задать тексту определённые параметры. Например, тип и размер шрифта, положение на странице, параметры печати или вывода на экран монитора.

Наибольшую популярность сейчас приобретает стандарт описания метаинформации XML (eXtend Markup Language). Основным требованием этого стандарта как раз и является принцип "юзерфрендли": xml-документы должны быть легко читаемы с помощью простейших текстовых процессоров, а также xml-разметка должна быть простой для понимания простым человеком.

ODF является одной из многочисленных реализаций стандарта XML. Поэтому, открыв odf-документ как zip-архив, разобраться со структурой файлов и папок по их названиям будет не слишком большой проблемой. Особенно для тех, кто хоть раз в своей жизни создавал html-странички, ну хотя бы на уровне "я и моя кошка". Главный файл с содержанием - это content.xml, файл стиля - style.xml. В папках могут находиться мультимедийные файлы: картинки, аудио-, видеофайлы. В общем, документ ODF представляет собой что-то вроде веб-сайта времён статических html-страничек.

Раз с самим форматом разобрались, то как же сохранить отчёт с расширением ods? На самом деле всё просто, самые простые документы можно создавать, взяв в качестве “донора” пустой документ и разрахивировав его, как указано выше. Стандарт, напомню, открытый. Ну, или нашим любимым способом.

Сохраняем в ODS формат из Delphi с помощью FastReport

Ещё до сохранения в .ods у вас уже должен быть собран проект с внедрённым FastReport c компонентом “экспорт в Open Documents Spreadsheet” и реализован отчёт (по созданию отчётов есть отдельная статья). Ещё раз уточню - да, вы можете в качестве источника данных для отчёта использовать внутренние источники приложения и базы данных. Запустили и в предпросмотре вызываем экспорт (в конце статьи есть способ сохранить ODS сразу из кода), должно появиться такое окошко настроек:

  

Средства FastReport помогают выбрать, какие страницы нашего документа отправить в Excel, диапазон или только определённые страницы.

Настройки экспорта – большее визуальное соответствие начальному варианту (WYSIWYG), page breaks - разрывы страниц, continuous - непрерывный документ с пропуском промежуточных заголовков и подвалов страниц, background - экспорт графических объектов, присвоенных фону страницы отчета.

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

Открыть после экспорта – результирующий файл будет открыт сразу же после экспорта программой, которая стоит по умолчанию для открытия ODS -документов.

Полный код для сохранения в Open Documents Spreadsheet сразу из Delphi / Lazarus

Сохранение в ODS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button1Click(Sender: TObject);
begin
 {Формируем отчёт. Перед экспортом отчёт необходимо обязательно сформировать}
 frxReport1.PrepareReport();
 {Устанавливаем диапазон экспортируемых страниц. По умолчанию экспортируются все страницы сформированного отчёта}
 frxODSExport1.PageNumbers := '2-3';
 {Устанавливаем, нужно ли формировать непрерывный документ}
 frxODSExport1.SingleSheet := False;
 {Устанавливаем, экспортировать ли разрывы страниц в пределах листа книги, чтобы страницы при печати соответствовали страницам сформированного отчёта}
 frxODSExport1.ExportPageBreaks := True;
 {Устанавливаем WYSIWYG}
 frxODSExport1.Wysiwyg := True;
 {Устанавливаем, нужно ли экспортировать фоновое изображение страницы}
 frxODSExport1.Background := True;
 {Устанавливаем, нужно ли открывать результирующий файл после экспорта}
 frxODSExport1.OpenAfterExport := False;
 {Устанавливаем, нужно ли отображать прогресс экспорта
  (показывать, какая страница в данный момент экспортируется)}
 frxODSExport1.ShowProgress := False;
 {Устанавливаем, нужно ли отображать окно диалога с настройками фильтра экспорта}
 frxODSExport1.ShowDialog := False;
 {Устанавливаем имя результирующего файла.}
 {Обратите внимание на то, что если не установить имя файла и отключить показ диалогового окна фильтра экспорта,}
 {то всё равно будет отображён диалог выбора имени файла}
 frxODSExport1.FileName := 'C:\Output\test.ods';
 {Экспортируем отчёт}
 frxReport1.Export(frxODSExport1);
end;

Вот так быстро и легко можно заставить ваше приложение генерировать документы современного общемирового стандарта.

VCL Экспорты Lazarus FastReport Delphi VCL Экспорты Lazarus FastReport Delphi
11 марта 2025

Как использовать FastReport .NET Avalonia на Fedora Workstation с протоколом Wayland

В данной статье мы разберем, как запустить FastReport .NET Avalonia на операционной системе «Fedora Workstation 39» с протоколом Wayland.
7 марта 2025

Как создать QR-код с картинкой в FastReport .NET

В статье разобрались как вставлять картинку в QR Code из дизайнера отчётов FastReport .NET всего за пару кликов.
20 февраля 2025

Использование матричных принтеров для печати чеков

В этой статье мы рассмотрим, как интегрировать матричный принтер в процесс создания и вывода отчетов с использованием FastReport .NET.