使用Apache POI 5生成docx项目符号列表却输出编号列表如何解决?
问题根因
你生成的numbering.xml中<w:lvl>节点缺少必填的w:ilvl(列表级别标识)属性,兼容性较差的文档阅读器(LibreOffice、Mac版Word、Slack预览等)无法识别这是一级项目符号列表,会默认降级为编号列表展示。
解决方案
修改创建列表级别的代码,新增指定ilvl属性的逻辑,只需要在原有代码的CTLvl cTLvl = cTAbstractNum.addNewLvl();行后新增一行代码即可:
cTLvl.setIlvl(BigInteger.valueOf(0));
修改后对应代码片段
//Bullet list CTLvl cTLvl = cTAbstractNum.addNewLvl(); cTLvl.setIlvl(BigInteger.valueOf(0)); // 新增指定列表级别为一级 cTLvl.addNewNumFmt().setVal(STNumberFormat.BULLET); cTLvl.addNewSuff().setVal(STLevelSuffix.SPACE); cTLvl.addNewLvlText().setVal("•");
修改后重新生成的docx文件,在所有兼容OpenXML标准的阅读器中都会正确显示为项目符号列表。
内容的提问来源于stack exchange,提问作者MTilsted
相关产品推荐
相关产品推荐

