Как записать в Microsoft Word 2007 XML из Delphi / Lazarus

DOCX- это файл архив, который можно распаковать сторонней программой. Формат является модернизированной версией широко известного расширения DOC. Значительным отличием стал малый вес при сохранении всех исходных параметров изображения. Если .doc представляет собой бинарный текстовый файл, то .docx содержит в себе XML-файлы и дополнительные папки, а сжатие файла уменьшает его размер.

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

Для работы с docx можно воспользоваться следующими программами: WindowsWord, Libre Office, Open Office, Word Pad, AiReader, Ice Book Reader, Calibre, Universal Viewer, Text Maker, Ability Write. Это лишь небольшой список из огромного количества программ, открывающих текстовые файлы формата DOCX.

Подробнее об XML я рассказал в статье «Записать в Excel XML из Delphi / Lazarus». Но как же создать документ DOCX из Delphi или Lazarus? А вот с помощью FastReport!

Сохраняем в формат . docx из Delphi без единой строчки кода!

Настройки Microsoft Word 2007 XML

Прежде всего, добавляем на форму компоненты TfrxReport, TfrxDOCXExport (экспорт в Microsoft Word 2007 XML). Затем создаём шаблон отчёта в дизайнере, формируем отчёт, нажимаем в предпросмотре “Сохранить” и вызываем экспорт из предпросмотра (ниже покажу, как реализовать запись с помощью кода Delphi). Появляется окошко настроек экспорта в DOCX.

Настроек хоть и не много, но рассказать о них стоит. Прежде всего какие страницы нашего документа отправить в Word, диапазон или только определённые страницы.

Настройки Microsoft Word 2007 XML

Как и всегда можно указать, куда отправить DOCX-файл (локально в файл, на электронную почту, FTP или поместить в облако).


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

 

Код для сохранения в DOCX сразу из Delphi / Lazarus

Сохранение в Microsoft Word 2007 XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
begin
 {Формируем отчёт. Перед экспортом отчёт необходимо обязательно сформировать}
 frxReport1.PrepareReport();
 {Устанавливаем диапазон экспортируемых страниц. По умолчанию экспортируются все страницы сформированного отчёта}
 frxDOCXExport1.PageNumbers := '2-3';
 {Устанавливаем, нужно ли открывать результирующий файл после экспорта}
 frxDOCXExport1.OpenAfterExport := False;
 {Устанавливаем, нужно ли отображать прогресс экспорта
  (показывать, какая страница в данный момент экспортируется)}
 frxDOCXExport1.ShowProgress := False;
 {Устанавливаем, нужно ли отображать окно диалога с настройками фильтра экспорта}
 frxDOCXExport1.ShowDialog := False;
 {Устанавливаем имя результирующего файла.}
 {Обратите внимание на то, что если не установить имя файла и отключить показ диалогового окна фильтра экспорта,}
 {то всё равно будет отображён диалог выбора имени файла}
 frxDOCXExport1.FileName := 'C:\Output\test.docx';
 {Экспортируем отчёт}
 frxReport1.Export(frxDOCXExport1);
end;

 Как обычно - ничего сложного.