如何为项目符号列表设置AbstractNumbering

时间:2016-08-08 13:38:48

标签: ms-word docx4j

我想在docx4j的Word文档中生成无序列表。任何人都可以给我一个AbstractNumbering项目符号列表的例子吗?

public void setAbstractNumbering(){
    try {
        NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
        myword.addTargetPart(ndp);
        Numbering.AbstractNum abstractNum = factory.createNumberingAbstractNum();
        abstractNum.setAbstractNumId(BigInteger.valueOf(1));
        Numbering.AbstractNum.MultiLevelType multiLevelType = new Numbering.AbstractNum.MultiLevelType();
        abstractNum.setMultiLevelType(multiLevelType);
        multiLevelType.setVal("singleLevel");
        Lvl lvl = factory.createLvl();
        abstractNum.getLvl().add(lvl);
        lvl.setIlvl(BigInteger.valueOf(0));
        Lvl.Start start = new Lvl.Start();
        lvl.setStart(start);
        start.setVal(BigInteger.valueOf(1));
        NumFmt numFmt = factory.createNumFmt();
        lvl.setNumFmt(numFmt);
        numFmt.setVal(NumberFormat.BULLET);
        Lvl.LvlText text = new Lvl.LvlText();
        lvl.setLvlText(text);
        text.setVal("%1");

        Numbering.Num numbering = ndp.addAbstractListNumberingDefinition(abstractNum);
        Numbering.Num.AbstractNumId abstractNumId = new Numbering.Num.AbstractNumId();
        abstractNumId.setVal(BigInteger.valueOf(1));
        numbering.setAbstractNumId(abstractNumId);
        numbering.setNumId(BigInteger.valueOf(3));

    } catch (InvalidFormatException ife){
        ife.printStackTrace();
    }

}

我在向NullPointerException添加abstractNumbering时收到NumberingDefinitionsPart。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

ListHelper.java#L155

您需要一个指向它的编号定义实例;进一步了解ecma376/WordML/numbering_2.html

获取代码的最简单方法是在Word中创建一个简单的docx,然后使用docx4j webapp或Helper Word AddIn从该docx中的编号定义部分生成代码。