Office 365 не может открыть файл xlsx, сформированный Reporting addon на Platform 7.2

Делаем любой отчет с шаблоном и выходным форматом xlsx через мастер Reporting.
Если сгенерированный шаблон не редактировать, то файл выходной формы xlsx успешно открывается и в Office 365 (классическое приложение Excel), и в Open Office.
Если сгенерированный мастером шаблон xlsx скачать, открыть в Excel из комплекта Office 365, внести любые изменения, сохранить и загрузить обратно в отчет, то сформированный выходной файл отчета не откроется в Office 365.
Отчет нормально формируется, открывается в Open Office, но при попытке отрыть в Office 365 вываливается сообщение:
image
Если согласиться на попытку восстановления, то ничего хорошего не происходит:
image

При редактировании шаблона Excel не сообщает ни о каких либо изменениях до “последней версии формата xlsx”, ни о том, что исходный файл в “устаревшем формате”.
Office 365 ProPlus, классическое приложение Excel версия 1908 сборка 11929.20684

У меня такое происходит если в шаблоне есть цепочки формул. При первом сохранении все работает как надо. А если внести изменения и ещё раз загрузить то выгружается битый отчёт.
Если прощелкать цепочки формул по отдельности, то проблема уходит до следующего изменения.
Видимо excel оптимизирует по порядку расположенные однотипные формулы в цепочку формул, а yarg с ними работает как то неправильно

Нет, в шаблоне формул нет.

Здравствуйте, а какая версия платформы используется?
Не могли бы вы приложить пример документа в котором проявляются данные ошибки?

Платформа 7.2
У меня легко воспроизводится на простейшем отчёте по единственной сущности.
Достаточно скачать шаблон, открыть в office, сохранить и загрузить шаблон обратно в отчёт.
Чуть позднее могу тестовый проект собрать.

В приложении тестовый проект на 7.2.
xmldestruction.zip (92.0 КБ)
В нем есть 2 отчета.
Report for entity “New entity” - отчет создан мастером, шаблон xlsx (создан мастером), выходной формат xlsx.
Копированием этого отчета получен отчет Report for entity “New entity” (2).
Далее скачал шаблон второго отчета, открыл в Office 365 ProPlus, сохранил, загрузил обратно в отчет.
Первый отчет формирует этот файл -
Report for entity New entity.xlsx|attachment (3.1 КБ)
Он открывается без проблем.

Второй отчет формирует этот файл -
Report for entity New entity (1).xlsx|attachment (7.6 КБ)
Он открывается в Open Office/LibreOffice, но Office 365 говорит что файл поврежден.

Шаблон из второго отчета:
Template for report Report for entity New entity.xlsx|attachment (8.5 КБ)

Он отличается только тем, что был открыт и сохранен в Office 365, а после этого - загружен обратно в отчет.
После такого сохранения шаблона отчета в Office 365 его не реанимирует уже ничего…
Я пробовал различные варианты его открытия в LibreOffice и пересохранения оттуда в различные варианты xlsx. Становится еще хуже - после таких манипуляций отчет не формируется вообще - вываливается сообщение типа " An error occurred while loading template xlsx".

Андрей, проблему воспроизвели. Спасибо за проект. Ишье: https://github.com/cuba-platform/yarg/issues/128
Как исправить проблему пока не ясно, более новая версия библиотеки docx4j не исправляет проблемы.

Для вас данная проблема критичная?

Неприятная проблема, но не сильно критично.
Приходится с шаблоном работать только в Libre Office. Тогда сформированный отчёт открывается в любом office.
Заказчик, скорее всего не заметит пока проблемы, т. к. Office 2012

Попробуем сообщить о проблеме разработчикам библиотеке docx4j, возможно смогут решить ее в ближайшее время.

1 симпатия

@subbotin От docx4j ничего не слышно?
Как на зло у клиента у шэфа оказался Office 2016… :frowning:

Привет. В docx4j поправили проблему, вчера выпустили релиз. Нам нужно время, чтобы обновить зависимости в YARG и проверить факт успешного исправления ошибки. Релиз YARG на этой недели думаю выпустим, но релиз платформы будет не очень скоро - может быть через 2-3 недели.
Как обходной пути вы сможете указать у себя в проекте зависимость на более новую версию YARG, после того как мы выпустим релиз YARG.

1 симпатия

Это хорошие новости :slight_smile:
Тогда жду вестей про релиз YARG, будем пробовать у себя поменять зависимость.

YARG c исправлением проблемы выпустили.
Попробуйте указать в зависимостях global модуля следующие зависимости:

compile('com.haulmont.yarg:yarg-api:2.2.6')
compile('com.haulmont.yarg:yarg:2.2.6') 
1 симпатия

Зависимости поменяли.
Не могу сказать, что излечилось совсем, но стало гораздо лучше.
Если раньше у нас 1 форма в 2016м не открывалась совсем и вешала процесс Excel, то теперь на ней Excel ругается на поврежденный файл, предлагает попытаться его восстановить и открывает.
После восстановления выдает резюме “Удаленный компонент: часть /xl/calcChain.xml с ошибкой XML. (Свойства вычислений) Разрушительный сбой Строка 2, столбец 647.”
Журнал восстановления прилагаю error270360_01.xml (627 Байт)

Три другие формы в проекте теперь открываются в Office 2016 без каких-либо проблем.
Шаблон проблемной формы удалось “излечить” малой кровью: открыл и пересохранил его в LibreOffice.
Ранее такое пересохранение ни как не меняло картины, а теперь, после пересохранения шаблона, ранее редактированного в Office 2016, отчет работает нормально и файл отчета открывается и в Office 2016 и в LibreOffice.

Ошибка calcChain.xml обычно о том, что формула как то неверно посчиталась. Переодически она была и раньше на старых версиях LibreOffice и MS Office. Если у вас получится сделать пример такого отчета попробуем поправить и это.

1 симпатия

Блин… Да, это была кривая формула, причем он она не нужна, видать подцепили копипастом из файла, предоставленного заказчиком, когда шаблон рисовали.
Теперь прямо successful :slight_smile:
Огромное спасибо!

Добрый день!
Пишу в этой теме, т.к. мой вопрос целиком связан с ней.
Имеется аналогичная проблема, xlsx шаблон выгружается “битый”, в excel появляется предупреждение “Удаленный компонент: часть /xl/calcChain.xml с ошибкой XML. (Свойства вычислений) Разрушительный сбой Строка 0, столбец 33.”
Подгрузка yarg версии 2.2.6 не помогла.
Танцы с конвертированием в LibreOfice не помогли.
Прошу подсказать куда и как смотреть в коде yarg’a чтобы выловить кривую формулу. Сейчас пляшу вокруг метода renderDocument() класса XlsxFormatter. Прошу поправить если не там смотрю.
Шаблон для примера предоставить не могу по соображениям безопасности.