如何在docx文件中创建三个或更多TOC,其中一个用于标题级别1,2,3,而其他TOC用于由程序创建的另一个样式?例如,我为表标题创建了一个样式,我想为这个样式的段落创建一个TOC。 我希望这些TOC位于文件末尾的特殊段落中。
哪一个更好,Apache-poi? docx4j?的Aspose?
我用apache-poi编写了我的其他代码。
答案 0 :(得分:0)
使用Aspose.Words for Java,您可以使用insertTableOfContents()方法和必需的开关参数在Word文档中添加TOC字段。您可以根据需要添加任意数量的TOC字段。以下代码添加了三个不同样式的TOC字段。
指定开关的最简单方法是使用Insert-> Reference-> Index and Tables菜单在Word文档中插入和配置目录,然后切换字段代码的显示以查看开关。您可以在Microsoft Word中按Alt + F9以打开或关闭字段代码的显示。
例如,在创建目录后,将在文档中插入以下字段:{TOC \ o" 1-3" \ h \ z \ u}。你可以复制\ o" 1-3" \ h \ z \ u并将其用作开关参数。
请注意insertTableOfContents方法只添加TOC字段,要填充TOC字段,您需要在代码中调用updateFields()方法或在MS Word中按F9。
// Use a blank document
com.aspose.words.Document doc = new com.aspose.words.Document();
// Create a document builder to insert content with into document.
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert a table of contents at the beginning of the document.
//TOC for Heading 1,2 and 3 styles
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
//TOC for specific style e.g. Heading 2
builder.insertTableOfContents("\\h \\z \\t \"Heading 2,1\"");
//TOC for specific style e.g. Heading 3
builder.insertTableOfContents("\\h \\z \\t \"Heading 3,1\"");
// Start the actual document content on the second page.
builder.insertBreak(BreakType.PAGE_BREAK);
// Build a document with complex structure by applying different heading styles thus creating TOC entries.
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 1");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
builder.writeln("Heading 1.1");
builder.writeln("Heading 1.2");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 2");
builder.writeln("Heading 3");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
builder.writeln("Heading 3.1");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_3);
builder.writeln("Heading 3.1.1");
builder.writeln("Heading 3.1.2");
builder.writeln("Heading 3.1.3");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
builder.writeln("Heading 3.2");
builder.writeln("Heading 3.3");
// Call the method below to update the TOC.
doc.updateFields();
doc.save("Sample_out_1710.docx");
我与Aspose一起担任开发人员Evangelist。