2017-10-15 8 views
0

どのように3つ以上の目次をdocxファイルに作成できますか?その1つが見出しレベル1,2,3などで、その他はプログラムによって作成される別のスタイルのものですか?たとえば、テーブルタイトルのスタイルを作成し、このスタイルの段落の目次を作成したいとします。 そして、私はこれらの目次をファイルの最後ではなく、特別な段落にしたいと思います。どのようにJavaでdocxで異なるスタイルの3つの目次を作成しますか?

これを実行する方が良いでしょうか、Apache-poi? docx4j? Aspose?

私は他のコードをapache-poiで書いています。

+0

あなたのTOCフィールドにスタイルを指定する必要があります:http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/TOC.html私はあなたが言及した3つのライブラリそのフィールドからのTOCは少し難しいかもしれません。あなたはdocx4jでそれを行うことができます。 https://github.com/plutext/docx4j/tree/master/src/samples/docx4j/org/docx4j/samplesのToc *サンプルを参照してください。 – JasonPlutext

答えて

0

Aspose.Words for Javaを使用すると、Word文書にTOCフィールドを追加するために、必要なスイッチパラメータを指定してinsertTableOfContents()メソッドを使用できます。必要に応じて、TOCフィールドを追加できます。次のコードは、異なるスタイルの3つの異なるTOCフィールドを追加します。

スイッチを指定する最も簡単な方法は、Insert-> Reference-> Index and Tablesメニューを使用して目次をWord文書に挿入して構成し、フィールドコードの表示を切り替えてスイッチを表示することです。 Microsoft WordでAlt + F9キーを押すと、フィールドコードの表示をオンまたはオフに切り替えることができます。 {目次\ 0「1-3」\ H \ Z \ U}:

は、例えば、コンテンツのテーブルを作成した後、次のフィールドは、ドキュメントに挿入されます。 \ o "1-3" \ h \ z \ uをコピーして、スイッチのパラメータとして使用できます。

TOCを移入するために、この方法が唯一のTOCフィールドを追加しinsertTableOfContents注意してくださいあなたがMS WordでコードやプレスF9でupdateFields()メソッドを呼び出す必要が提出されました。

// 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を使用しています。

関連する問題