При формировании таблицы в 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);
}

