Привет, я пытаюсь создать оглавление в документе 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
Спасибо. теперь это работает для меня, я надеюсь, что это поможет другим
Вы можете ответить на свой вопрос, или его можно закрыть как дубликат со ссылкой на решение.
Если поле Microsoft Word должно быть установлено как «грязное», чтобы Microsoft Word обновил это поле при следующем открытии файла, то это было сделано с помощью установки свойства CTSimpleField
dirty
на 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);
...
Вы не до конца прочитали мой ответ stackoverflow.com/questions/43335464/…: «Чтобы этот код работал, используйте версии apache poi выше 4…».