java 发生异常错误:联合值“false”与命名空间中“ST_OnOff”的任何成员都不匹配

t3irkdon  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(294)

你好,我正在特灵使用java apachi poi库在word文档中创建目录。我在这里找到了一个代码表。但当我运行代码时,它给我下面的错误
发生异常。联合值“false”与命名空间http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes中“ST_OnOff”的任何成员都不匹配
产生错误的代码是

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

POI版本5.2.3

f4t66c6m

f4t66c6m1#

如果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);
...

相关问题