Java POI Исключение при использовании пароля: Не удалось сохранить часть /xl/styles.xml в потоке - PullRequest
0 голосов
/ 18 июня 2020

Мы имеем дело с исключением при попытке создать зашифрованный файл xlsx из незашифрованного.

Caused by: org.apache.poi.openxml4j.exceptions.OpenXML4JException: The part /xl/styles.xml failed to be saved in the stream with marshaller org.apache.poi.openxml4j.opc.internal.marshallers.DefaultMarshaller@852ef8d
at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:543) ~[poi-ooxml-4.1.2.jar:4.1.2]

Я читал, что это потому, что один из задействованных файлов открыт более чем один раз. Это не относится к делу. Этот процесс состоит, скажем, из двух частей. Один создает файл xlsx, а другой запускает его для его шифрования. Я разделил их на части, чтобы я мог тестировать их одну за другой по отдельности. Выполняю первый шаг, я создаю файл xlsx, завершается модульный тест, больше ничего не запускаю. Затем я запускаю второй шаг в отдельном тестовом сеансе (чтобы убедиться, что ничто не удерживает открытый предыдущий файл) и получаю это исключение.

1 Ответ

0 голосов
/ 18 июня 2020

Хорошо ... проблема состоит из двух частей.

Во-первых, исключение происходит при шифровании , потому что /xl/styles.xml слишком велик. Шифрование выполняется для действительного xlsx файла, но он имеет очень большие стили. xml файл.

Во-вторых: я мог бы пропустить проблему, повторно используя стили вместо создания новых для ячеек, которые я создаю в файле first . Тогда шифрование не дает сбоев .... но возникает вопрос: почему шифрование не работает, если исходный файл создан нормально?

Спасибо go @AxelRichter за указание на в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...