1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/myfattree-wordexport

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

шаблон Freemarker

  • Создание объекта XSSFWorkbook для работы с документом.
  • Дополнение листа к документу.
  • Добавление текста, таблиц, изображений и других элементов на лист.
  • Сохранение документа в файл.

Пример создания простого документа:

import org.apache.poi.xwpf.usermodel.*;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class WordDocumentGenerator {
    public static void main(String[] args) {
        try (XSSFWorkbook workbook = new XSSFWorkbook()) {
            XSSFCellStyle style = workbook.createCellStyle();
            style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

            XSSFCellStyle style2 = workbook.createCellStyle();
            style2.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
            style2.setFillPattern(FillPatternType.SOLID_FOREGROUND);

            XSSFWorkbook wb = new XSSFWorkbook();
            XSSFSheet sheet = wb.createSheet("Лист1");

            XSSFRow row = sheet.createRow(0);
            XSSFCell cell = row.createCell(0);
            cell.setCellValue("Привет");
            cell.setCellStyle(style);

            row.createCell(1).setCellValue("Мир");
            row.getCell(1).setCellStyle(style2);

            try (FileOutputStream out = new FileOutputStream(new File("output.docx"))) {
                wb.write(out);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. Использование OpenOffice и LibreOffice

Еще одним подходом к генерации Word-документов является использование OpenOffice или LibreOffice через их API. Это позволяет создавать документы с использованием более сложных форматов и функций, доступных в этих офисных пакетах.### 3. Использование сторонних библиотек

Также существуют различные сторонние библиотеки, которые могут быть использованы для создания Word-документов на Java. Например, библиотека JODConverter позволяет использовать LibreOffice для преобразования различных форматов документов.### Заключение Выбор подхода для генерации и экспорта Word-документов на Java зависит от конкретных требований к документу и от того, какие возможности и функции необходимо реализовать. Apache POI является наиболее популярным и мощным инструментом для этой задачи, но в зависимости от задачи могут быть использованы и другие подходы.

Реализация

1. Создание doc-файла

1.1 Создание шаблона
  • Шаги по созданию шаблона doc-файла можно найти в статье Java использование FreeMarker для автоматического создания Word-документов (с картинками и формами) в разделе 3 Создание Word-шаблона.
  • Вкратце, необходимо сохранить doc-файл как xml, изменить xml-код, чтобы он соответствовал стандартам FreeMarker, и затем переименовать файл в ftl и поместить его в статическую папку ресурсов проекта.##### 1.2 Создание проекта
  • 1.2.1 Создание проекта на Spring Boot.
  • 1.2.2 Добавление зависимостей FreeMarker и Spring Boot в файл pom.xml.
  • 1.2.3 Создание папки templates в src/main/resources.
  • 1.2.4 Размещение созданных шаблонов в папке templates.
  • 1.2.5 Начало написания кода и тестирования.

2 Создание файлов docx

2.1 Создание шаблонов

  • Подробные шаги по созданию шаблонов docx файлов можно найти в статье [использование Freemarker шаблонов для создания docx файлов в Java](https://my.oschina.net/u/3737136/blog/2958421? tdsourcetag=s_pcqq_aiomsg).
  • Подробные шаги по созданию docx файлов с таблицами можно найти в статье использование Freemarker шаблонов для создания docx файлов в Java (полный процесс). Эта статья основана на предыдущей, поэтому шаги похожи.
  • Вкратце, создание шаблонов docx состоит из трех шагов:
  • 1 Измените расширение docx на zip.
  • 2 Откройте zip архив и скопируйте файл word/document.xml.
  • 3 Измените содержимое скопированного xml файла, чтобы он соответствовал стандартам Freemarker, и измените его расширение на ftl.
  • 4 Разместите document.ftl и zip архив в статических ресурсах вашего проекта.
  • Важные моменты при использовании шаблонов docx:
  • 1 Zip архив должен быть оригинальным docx файлом, преобразованным в zip. Не заменяйте оригинальный document.xml.
  • 2 Каждый docx файл должен иметь свой уникальный document.ftl. При работе с несколькими docx файлами убедитесь, что шаблоны имеют уникальные имена.

2.2 Создание проекта

  • 2.2.1 Создание проекта на Spring Boot
  • 2.2.2 Добавление зависимостей Freemarker и связанных с Spring Boot в файл pom.xml
  • 2.2.3 Создание директории templates в src/main/resources
  • 2.2.4 Размещение ранее созданных шаблонов document.ftl и zip-пакета в директории templates
  • 2.2.5 Начало написания кода и тестирования### 3 Пример кода
  • Онлайн просмотр: myfattree / wordexport
  • Клонирование и загрузка: https://gitee.com/myfattree/wordexport.git

Условия использования

  • В настоящее время тестирование проводилось только для файлов Word с расширением doc и docx, содержащих таблицы и текст. Тестирование изображений и гиперссылок не проводилось.
  • Использование шаблонов Freemarker для создания файлов Word требует предварительного создания шаблонов, которые затем заполняются различными данными для создания файлов Word.
  • В отличие от других проектов, где созданные файлы Word сначала загружаются в MongoDB, а затем скачиваются по fileId, в моем коде файлы Word скачиваются напрямую при доступе, без предварительного хранения в MongoDB. Выбор метода зависит от конкретных требований.### О выгрузке изображений
  • Для файлов doc выгрузка изображений проста: достаточно установить место для изображения в шаблоне и преобразовать изображение в base64 для замены. Этот метод был протестирован и работает, пример кода на Gitee обновлен.
  • Для файлов docx выгрузка изображений сложнее: необходимо установить место для изображения и ссылку на изображение в шаблоне в виде плейсхолдеров, затем добавить изображение в zip-пакет в директории word/media, заменить плейсхолдеры на имя файла изображения (без расширения) и добавить ссылку на изображение в файл word/_rels/document.xml.rels. Этот метод был протестирован и работает, пример кода на Gitee обновлен.

Ссылки на дополнительные материалы

Modifier and Type Field and Description Примечание
protected java.util.List bodyElements Список элементов (параграфы и таблицы)
protected java.util.List charts Графики
protected java.util.List comments Комментарии
protected java.util.List contentControls Контроли содержимого
protected XWPFEndnotes endnotes Примечания в конце
protected java.util.List footers Подвалы
protected XWPFFootnotes footnotes Примечания внизу
protected java.util.List headers Заголовки
protected java.util.List hyperlinks Гиперссылки
protected XWPFNumbering numbering Нумерация
protected java.util.Map<java.lang.Long,java.util.List> packagePictures Изображения
protected java.util.List paragraphs Параграфы (текст)
protected java.util.List pictures Изображения
protected XWPFStyles styles Стили шрифтов
protected java.util.List tables Таблицы
Использованы две версии apache-poi
  • 3.12 : При использовании этой версии необходимо закомментировать классы ApachePOIUtils.java и MainUtils.java в пакете com/fattree/apachepoi/word/utils
  • 4.1.2: При использовании этой версии необходимо закомментировать классы ApachePOIUtils312.java и MainUtils312.java в пакете com/fattree/apachepoi/word/utils

Ссылки

Ссылки

poi-tl

О Apache POI

  • poi-tl (poi template language) — это движок шаблонов Word, который позволяет создавать отличные Word документы с использованием шаблонов Word и данных.
  • poi-tl — это Word-шаблонный движок, основанный на Apache POI, и это бесплатная и открытая Java библиотека.

Ссылки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Техническое обоснование генерации и экспорта Word-документов на Java Для реализации задачи генерации и экспорта документов Word на Java можно использовать различные библиотеки и фреймворки. В данном обосновании будут рассмотрены основные подходы и инструменты, которые могут быть использованы для создания Word-документов с помощью Java. ### 1. ... Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/myfattree-wordexport.git
git@api.gitlife.ru:oschina-mirror/myfattree-wordexport.git
oschina-mirror
myfattree-wordexport
myfattree-wordexport
master