如图所示的段落,怎么给这些段落添加 标签列表?
还有就是怎么修改某个段落的标签值
@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)
这里主要描述了怎么创建列表。
若已知文档中的段落,给这些段落去添加列表怎么添加呢?
还有就是已知段落已有列表,怎么去修改这个列表?
实际上,您可以按照与上述相同的方式将列表应用到现有段落。 例如,以下代码将默认编号列表应用于文档中的第一段:
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)");
得到的结果如图所示,请问是哪里有问题呢
按照您的修改过后,结果如图,还是不对
输入文档:
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
您可以使用 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)
是的,原始文档是重新编号了。那怎么使不同列表的 编号 属于同一个列表呢