Создание файла 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;

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

2 сентября 2024

Обзор облачного решения для создания и управления отчетами

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

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.