You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache POI生成Word目录遇XmlValueOutOfRangeException错误求助

解决Apache POI 5.2.3生成Word目录时的XmlValueOutOfRangeException错误

问题原因

在POI 5.x版本中,CTSimpleField的setDirty(STOnOff)方法存在XMLBeans类型兼容问题,直接传入STOnOff.TRUE会触发枚举值与XML union类型不匹配的错误。

解决方案

替换原代码中设置dirty属性的行,直接通过DOM节点设置dirty属性为"true",绕过XMLBeans的枚举处理:

修改前代码:

toc.setDirty(STOnOff.TRUE);

修改后代码:

// 直接操作DOM节点设置dirty属性
toc.getDomNode().setAttribute("dirty", "true");

完整的生成目录代码示例:

XWPFParagraph paragraph = document.createParagraph();
CTP ctP = paragraph.getCTP();
CTSimpleField toc = ctP.addNewFldSimple();
toc.setInstr("TOC \\* MERGEFORMAT");
// 替换原setDirty方法,直接设置DOM属性
toc.getDomNode().setAttribute("dirty", "true");

说明

直接操作DOM节点设置属性可以避免XMLBeans对STOnOff枚举的类型校验问题,确保Word文档能正确识别目录的dirty标记,打开文档时会提示更新目录。

内容的提问来源于stack exchange,提问作者Ramzan Niazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:25:18