请问怎么给文档中的 段落 添加标签列表

如图所示的段落,怎么给这些段落添加 标签列表?
还有就是怎么修改某个段落的标签值

@ouchli 请参阅我们的文档以了解如何使用 Aspose.Words 处理列表:
https://docs.aspose.com/words/java/working-with-lists/

例如,请参阅以下定义列表的代码:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Define a list.
com.aspose.words.List customList = doc.getLists().add(ListTemplate.NUMBER_ARABIC_DOT);
// Change number formatting of the second level.
customList.getListLevels().get(1).setNumberStyle(NumberStyle.ARABIC);
customList.getListLevels().get(1).setNumberFormat("\u0001)");

builder.getListFormat().setList(customList);
builder.writeln("First item");
builder.getListFormat().listIndent();
builder.writeln("First sub item item");
builder.getListFormat().listOutdent();
builder.writeln("Second item");
builder.writeln("Third item");
builder.write("Fourth item");

doc.save("C:\\Temp\\out.docx");

out.docx (7.9 KB)

这里主要描述了怎么创建列表。
若已知文档中的段落,给这些段落去添加列表怎么添加呢?
还有就是已知段落已有列表,怎么去修改这个列表?

您好,再问一下,图中红框的 列表符号 ,可以自定义符号吗?可以自定义符号级别吗?

@ouchli

实际上,您可以按照与上述相同的方式将列表应用到现有段落。 例如,以下代码将默认编号列表应用于文档中的第一段:

Document doc = new Document("C:\\Temp\\in.docx");
doc.getFirstSection().getBody().getFirstParagraph().getListFormat().applyNumberDefault();
doc.save("C:\\Temp\\out.docx");

您可以将列表应用于段落并根据需要进行调整。 例如:

Document doc = new Document("C:\\Temp\\in.docx");
Paragraph para = doc.getFirstSection().getBody().getFirstParagraph();
if (para.isListItem())
{
    com.aspose.words.List lst = para.getListFormat().getList();
    lst.getListLevels().get(0).setNumberStyle(NumberStyle.NUMBER_IN_CIRCLE);
}
doc.save("C:\\Temp\\out.docx");

当然你可以配置这个。 例如看下面的代码:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Create a bulleted list
com.aspose.words.List bulletList = doc.getLists().add(ListTemplate.BULLET_DEFAULT);
// Configure list levels.
bulletList.getListLevels().get(0).getFont().setName("Symbol");
bulletList.getListLevels().get(0).setNumberFormat("\u00A7");
bulletList.getListLevels().get(1).getFont().setName("Symbol");
bulletList.getListLevels().get(1).setNumberFormat("\u00A8");
bulletList.getListLevels().get(2).getFont().setName("Symbol");
bulletList.getListLevels().get(2).setNumberFormat("\u00A9");
bulletList.getListLevels().get(3).getFont().setName("Symbol");
bulletList.getListLevels().get(3).setNumberFormat("\u00AA");

// Insert list items using the above create list.
builder.getListFormat().setList(bulletList);
builder.writeln("First Level");
builder.getListFormat().listIndent();
builder.writeln("Second Level");
builder.getListFormat().listIndent();
builder.writeln("Third Level");
builder.getListFormat().listIndent();
builder.write("Fourth Level");

doc.save("C:\\Temp\\out.docx");

out.docx (8.0 KB)

private static void test() throws Exception {
        Document document = new Document("D:\\Users\\00306664\\Desktop\\文档检查测试文档\\列项操作.docx");
        NodeCollection<Paragraph> childNodes = document.getChildNodes(NodeType.PARAGRAPH, true);
        for (Paragraph childNode : childNodes) {
            ListFormat listFormat = childNode.getListFormat();
            boolean listItem = listFormat.isListItem();
            if (listItem && !childNode.getParagraphFormat().isHeading()) {
                ListLevel listLevel = childNode.getListFormat().getListLevel();
                listLevel.setNumberFormat("\\u0001)");
                break;
            }
        }
        document.save("D:\\Users\\00306664\\Desktop\\文档检查测试文档\\列项测试结果.docx");
    }

您好,使用上述代码去修改段落的编号格式:setNumberFormat("\\u0001)");
得到的结果如图所示,请问是哪里有问题呢

@ouchli 你应该使用:

listLevel.setNumberFormat("\u0001)");

代替

listLevel.setNumberFormat("\\u0001)");

按照您的修改过后,结果如图,还是不对

@ouchli 您能否在此处附上示例输入和输出文档以进行测试? 我们将检查该问题并为您提供更多信息。

输入文档:
Tihs.docx (20.7 KB)

输出文档:
列项测试结果.docx (19.5 KB)

代码示例:

Document document = new Document("D:\\Users\\11111\\Desktop\\文档检查测试文档\\Tihs.docx");
        NodeCollection<Paragraph> childNodes = document.getChildNodes(NodeType.PARAGRAPH, true);
        for (Paragraph childNode : childNodes) {
            ListFormat listFormat = childNode.getListFormat();
            boolean listItem = listFormat.isListItem();
            if (listItem && !childNode.getParagraphFormat().isHeading()) {
                ListLevel listLevel = childNode.getListFormat().getListLevel();
                listLevel.setNumberFormat("\u0001)");
                break;
            }
        }
        document.save("D:\\Users\\11111\\Desktop\\文档检查测试文档\\列项测试结果.docx");

@ouchli 请尝试使用以下代码:

Document doc = new Document("C:\\Temp\\in.docx");

NodeCollection<Paragraph> childNodes = doc.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph childNode : childNodes)
{
    ListFormat listFormat = childNode.getListFormat();
    boolean listItem = listFormat.isListItem();
    if (listItem && !childNode.getParagraphFormat().isHeading())
    {
        ListLevel listLevel = childNode.getListFormat().getListLevel();
        listLevel.setNumberStyle(NumberStyle.ARABIC);
        listLevel.setNumberFormat("\0)");
        break;
    }
}

doc.save("C:\\Temp\\out.docx");

您好,现在的结果对了

但是输出的结果 编号和文本的距离是挨着呢。这个距离可以设置为下面一行的距离吗

如果要设置编号为

这种实心圆圈,应该怎么设置 setNumberFormat

@ouchli

您可以使用 ListLevel.TabPosition 属性指定列表级别选项卡位置,使用 ListLevel.TextPosition 指定文本位置,使用 ListLevel.NumberPosition 指定数字位置。

您应该将级别的字体设置为 Symbol level.setNumberFormat("\uF0B7")

自动修订源文档.docx (14.2 KB)

NodeCollection<Paragraph> childNodes = document.getChildNodes(NodeType.PARAGRAPH, true);
for (Paragraph childNode : childNodes)
{
    ListFormat listFormat = childNode.getListFormat();
    boolean listItem = listFormat.isListItem();
    if (listItem && !childNode.getParagraphFormat().isHeading())
    {
        ListLevel listLevel = childNode.getListFormat().getListLevel();
        listLevel.setNumberStyle(NumberStyle.ARABIC);
        listLevel.setNumberFormat("\1)");
        break;
    }
}

使用上述代码输出的文档
自动修订结果.docx (14.2 KB)

从 2 开始编号的话,编号有乱码,且编号顺序不对,请问是什么原因

@ouchli 您应该使用 listLevel.setNumberFormat("\0)");。 当您指定“\1”时,这是列表第二级的值,但列表项位于第一级。 所以提供的代码使列表无效。
out.docx (13.5 KB)

源文档 Tihs.docx (21.2 KB)

请问怎么使源文档中的

红框中的 列表编号 1) 修改为 2)
从而输出文档:
Tihs.docx (21.2 KB)

@ouchli 感谢您提供更多信息。 但这些项目属于不同的列表,因此重新编号。 您可以通过选择原始文档中的列表项来查看这一点。

是的,原始文档是重新编号了。那怎么使不同列表的 编号 属于同一个列表呢

@ouchli 这些项目应该属于同一列表,或者应适当设置第二个列表的起始编号。