При формировании таблицы в XWPFDocument, Microsoft Word выдаёт ошибку

Мне требуется сформировать .docx документ из получаемых данных. Используется Java 1.8 и Apache poi-ooxml 5.0.0

В нём формируется таблица, в которой указана история запроса.

Проблема в том, что после формирования таблицы, Microsoft Word выдаёт ошибку и ломает таблицу. Если таблицу не использовать, то файл не ломается, но она мне нужна.

Пример ошибки

Как выглядит таблица в файле

Код:

public ResponseEntity<ByteArrayResource> export(Long id) throws GException, IOException {
    Request request = requestCache.find(id);

    XWPFDocument document = new XWPFDocument();
    setTitleText(document.createParagraph(), "История запроса №" + request.getId(), true, 16);

    List<EventEntity> events = eventEntityRepository.findByRequest(request.getId(), new Sort(Sort.Direction.ASC,"id"));
    XWPFTable table = document.createTable((events.size() * 2) + 1, 4);

    XWPFTableRow row = table.getRow(0);
    setTitleText(row.getCell(0).addParagraph(), "Дата\\время события", true, 12);
    setTitleText(row.getCell(1).addParagraph(), "Номер события", true, 12);
    setTitleText(row.getCell(2).addParagraph(), "Наименование события", true, 12);
    setTitleText(row.getCell(3).addParagraph(), "Инициатор события", true, 12);

    FileOutputStream out = new FileOutputStream("request" + request.getId() + ".docx");
    document.write(out);
    out.close();
    document.close();

    File file = new File("request" + request.getId() + ".docx");

    Path path = Paths.get(file.getAbsolutePath());
    ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(path));
    HttpHeaders header = new HttpHeaders();
    header.set(HttpHeaders.CONTENT_TYPE, "application/octet-stream");
    header.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=utf-8''" +
            encodeFileName("request" + request.getId()) + ".docx" + ";  filename=" + "request" + request.getId() + ".doc");

    return ResponseEntity.ok()
            .headers(header)
            .contentLength(file.length())
            .contentType(MediaType.APPLICATION_OCTET_STREAM)
            .body(resource);
}

Ответы (0 шт):