Создать слово из шаблона в java

Процесс создания отчета чаще всего состоит из заполнения предопределенных шаблонов документов, содержащих заполнители для нужных полей. Механизмы отчетов принимают шаблон документа в качестве входных данных, динамически заполняют заполнители данными и генерируют результирующие отчеты. В этой статье также будет продемонстрирован аналогичный вариант использования, когда вы можете создавать документы Word, заполняя шаблоны Word динамически и программно с помощью Java.

Для создания документов Word из шаблонов DOCX мы будем использовать Подсистему отчетов LINQ, предлагаемую API Aspose.Words for Java. LINQ Reporting Engine поддерживает различные теги для текста, изображений, списков, таблиц, гиперссылок и закладок для шаблонов Word. Документы-шаблоны, содержащие эти теги, заполняются механизмом данными, поступающими из объектов Java, а также из источников данных XML, JSON или CSV. Итак, давайте начнем создавать документы Word из шаблонов с помощью Java.

В этой статье будет рассказано, как создать документ Word из шаблона, используя:

  • значения из объектов Java,
  • источник XML-данных,
  • источник данных JSON,
  • и источник данных CSV.

Установка Aspose.Words для Java — Word Automation и API генерации отчетов

Вы можете загрузить Aspose.Words for Java JAR или добавить его в свое приложение на основе Maven, используя следующие конфигурации.

Репозиторий:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Зависимость:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>20.1</version>
    <type>pom</type>
</dependency>

Создание документов Word из шаблона с использованием объектов Java

Чтобы начать создание отчета, давайте сначала создадим документ Word, заполнив шаблон значениями из объектов Java. Чтобы определить шаблон документа, создайте новый документ Word, вставьте следующие теги и сохраните его как документ DOCX.

<<[s.getName()]>> says: "<<[s.getMessage()]>>."

В приведенном выше шаблоне «s» будет рассматриваться как объект класса Java, который будет использоваться для заполнения тегов. Итак, давайте создадим класс Sender с двумя элементами данных.

public class Sender {
    public Sender(String name, String message) {
        _name = name;
        _message = message;
    } 
    public String getName() {
        return _name;
    } 
    public String getMessage() {
        return _message;
    } 
    private String _name;
    private String _message;
}

Теперь пришло время передать шаблон Word в механизм отчетов LINQ и сгенерировать документ Word на основе значений объекта Sender. Ниже приведены шаги для создания документа Word:

  • Создайте объект Document и инициализируйте его путем к шаблону.
  • Создайте и инициализируйте объект класса Sender.
  • Создайте объект класса ReportingEngine.
  • Создайте отчет с помощью метода ReportingEngine.buildReport(), который принимает шаблон документа, источник данных и имя источника данных.
  • Сохраните сгенерированный документ Word с помощью метода Document.save().

В следующем примере кода показано, как создать документ Word из шаблона Word с использованием значений объекта Java.

// Создайте объект Document и инициализируйте его шаблоном DOCX.
Document doc = new Document("template.docx");
// Создайте объект отправителя.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// Создайте объект ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Построить отчет.
engine.buildReport(doc, sender, "s");
// Сохранить как документ Word.
doc.save("word.docx");

Выход

генерировать текстовый документ по шаблону с объектами Java

Создание документов Word из шаблона с использованием XML-данных

Давайте теперь сделаем еще один шаг и посмотрим, как заполнить шаблоны Word с помощью источника данных XML в немного сложном сценарии. Ниже приведен источник данных XML, который мы будем использовать для заполнения шаблона Word.

<Persons>
   <Person>
       <Name>John Doe</Name>
       <Age>30</Age>
       <Birth>1989-04-01 4:00:00 pm</Birth>
   </Person>
   <Person>
       <Name>Jane Doe</Name>
       <Age>27</Age>
       <Birth>1992-01-31 07:00:00 am</Birth>
   </Person>
   <Person>
       <Name>John Smith</Name>
       <Age>51</Age>
       <Birth>1968-03-08 1:00:00 pm</Birth>
   </Person>
</Persons>

В этом сценарии мы будем использовать следующие теги в документе шаблона для нескольких записей в источнике данных XML.

<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Age)]>>

Код Java для создания документа Word в этом случае будет таким же, за исключением передачи объекта Java в качестве источника данных, мы передадим объект XmlDataSource в методе ReportingEngine.buildReport(). В следующем примере кода показано, как создать документ Word, заполнив шаблон документа с помощью источника данных XML в Java.

// Создайте объект Document и инициализируйте его шаблоном DOCX.
Document doc = new Document("template.docx");
// Загрузить XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// Создайте объект ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Построить отчет.
engine.buildReport(doc, dataSource, "persons");
// Сохранить как документ Word.
doc.save("word.docx");

Выход

создать текстовый документ по шаблону с помощью XML в Java

Создание документов Word из шаблона с использованием данных JSON

Давайте теперь посмотрим, как создать документ Word из шаблона DOCX с использованием источника данных JSON. Ниже приведены данные JSON, которые мы будем использовать в этом примере.

[
   {
       Name: "John Smith",
       Contract:
       [
           {
               Client:
               {
                   Name: "A Company"
               },
               Price: 1200000
           },
           {
               Client:
               {
                   Name: "B Ltd."
               },
               Price: 750000
           },
           {
               Client:
               {
                   Name: "C & D"
               },
               Price: 350000
           }
       ]
   },
   {
       Name: "Tony Anderson",
       Contract:
       [
           {
               Client:
               {
                   Name: "E Corp."
               },
               Price: 650000
           },
           {
               Client:
               {
                   Name: "F & Partners"
               },
               Price: 550000
           }
       ]
   },
]

В этом примере мы создадим документ Word, содержащий список клиентов, сгруппированных по их менеджерам. В соответствии с этим сценарием шаблон DOCX будет выглядеть следующим образом:

<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>

Для загрузки источника данных JSON Aspose.Words предоставляет класс JsonDataSource. В следующем примере кода показано, как создать документ Word из шаблона с использованием источника данных JSON в Java.

// Создайте объект Document и инициализируйте его шаблоном DOCX.
Document doc = new Document("template.docx");
// Загрузить JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// Создайте объект ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Построить отчет.
engine.buildReport(doc, dataSource, "managers");
// Сохранить как документ Word.
doc.save("word.docx");

Выход

создать текстовый документ с JSON в Java

Создание документов Word из шаблона с использованием данных CSV

И последнее, но не менее важное: давайте посмотрим, как создать документ Word, заполнив шаблон Word, используя следующий источник данных CSV.

John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm

В этом примере будет использоваться следующий шаблон Word:

<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Column2)]>>

Для работы с источниками данных CSV Aspose.Words предлагает класс CsvDataSource. В следующем примере кода показано, как создать документ Word с использованием источника данных CSV в Java.

// Создайте объект Document и инициализируйте его шаблоном DOCX.
Document doc = new Document("template.docx");
// Загрузить CSV-файл
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// Создайте объект ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Построить отчет.
engine.buildReport(doc, dataSource, "persons");
// Сохранить как документ Word.
doc.save("word.docx");

Выход

создать текстовый документ с CSV в java

Дополнительные сведения о механизме отчетов LINQ

LINQ Reporting Engine поддерживает широкий спектр тегов для динамического создания полнофункциональных документов Word на Java. Вы можете узнать больше об этих тегах и их синтаксисе в этой статье.

Если у вас возникнут какие-либо вопросы или вопросы, вы можете опубликовать их на Aspose.Words Forum.

Статьи по Теме