Org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: значение объединения «false» не соответствует ни одному члену «ST_OnOff в пространстве имен»

Привет, я пытаюсь создать оглавление в документе Word, используя библиотеку java apachi poi. Я нашел кодовую форму здесь. Но когда я запускаю код, он выдает ошибку ниже

rg.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: значение объединения «false» не соответствует ни одному члену «ST_OnOff в пространстве имен» http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes

код, создающий ошибку,

XWPFParagraph paragraph = document.createParagraph();
CTP ctP = paragraph.getCTP();
CTSimpleField toc = ctP.addNewFldSimple();
toc.setInstr("TOC \\* MERGEFORMAT");
toc.setDirty(STOnOff.TRUE);

Пои версия 5.2.3

Вы не до конца прочитали мой ответ stackoverflow.com/questions/43335464/…: «Чтобы этот код работал, используйте версии apache poi выше 4…».

Axel Richter 25.01.2023 11:03

Спасибо. теперь это работает для меня, я надеюсь, что это поможет другим

Ramzan Niazi 25.01.2023 11:20

Вы можете ответить на свой вопрос, или его можно закрыть как дубликат со ссылкой на решение.

trashgod 25.01.2023 17:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если поле Microsoft Word должно быть установлено как «грязное», чтобы Microsoft Word обновил это поле при следующем открытии файла, то это было сделано с помощью установки свойства CTSimpleFielddirty на org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff.TRUE вплоть до Apache POI версии 4.x.x.

Начиная с версии 5.0.0 org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff больше нет. Есть и другие STOnOff классы, но ни один из них не предоставляет TRUE/FALSE, а только ON/OFF. Но теперь CTSimpleField.setDirty напрямую принимает логические значения.

Чтобы этот код работал с версиями Apache POI выше 4, вам необходимо изменить следующее:

...
//import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
...
  //toc.setDirty(STOnOff.TRUE);
  toc.setDirty(true);
...

Другие вопросы по теме