Generowanie nawigacyjnego spisu treści jest niezbędne przy tworzeniu dużych raportów Word lub podręczników, które użytkownicy muszą szybko przeglądać. Conholdate.Total for Java zapewnia solidny SDK, który upraszcza pracę z plikami DOCX bezpośrednio z aplikacji Java. W tym przewodniku krok po kroku dowiesz się, jak dodać spis treści do dokumentu Word w Javie, obejmując konfigurację, wyjaśnienie kodu i najlepsze praktyki.

Pełny działający przykład dodawania spisu treści do dokumentu Word w Javie

Poniższy przykład pokazuje, jak wstawić spis treści do pliku DOCX przy użyciu Conholdate.Total for Java.

import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.BreakType;
import com.aspose.words.StyleIdentifier;

public class AddTableOfContentsExample {
    public static void main(String[] args) throws Exception {
        // Directory where the output document will be saved
        String dataDir = "output/";

// Create a new document and a builder to work with it
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

// Insert a table of contents field at the current cursor position.
        // "\o \"1-3\" \h \z \u" includes heading levels 1-3, makes entries
        // clickable hyperlinks, hides tab leaders in Web layout, and uses
        // outline levels applied to non-heading styles.
        builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");

// Start the actual document content on the second page.
        builder.insertBreak(BreakType.PAGE_BREAK);

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");

// The newly inserted table of contents is initially empty.
        // It needs to be populated by updating the fields in the document.
        doc.updateFields();

doc.save(dataDir + "TableOfContents.docx");
    }
}

Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie upewnij się, że zaktualizowałeś katalog wyjściowy (dataDir), aby odpowiadał rzeczywistej lokalizacji pliku, sprawdź, czy wszystkie wymagane zależności są prawidłowo zainstalowane, oraz dokładnie przetestuj w swoim środowisku programistycznym. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia w celu uzyskania pomocy.

Zrozumienie dodawania spisu treści do dokumentu Word w kodzie Java

Poniżej znajduje się podział głównych kroków wykonywanych przez przykładowy kod:

  1. Utwórz dokument i builder - Document reprezentuje plik Word w pamięci, a DocumentBuilder udostępnia metody do wstawiania treści i pól do niego.

    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);
    
  2. Wstaw pole spisu treści - insertTableOfContents zapisuje pole spisu treści w miejscu kursora. Ciąg przełączników kontroluje jego zachowanie: \o "1-3" obejmuje poziomy nagłówków od 1 do 3, \h sprawia, że pozycje są klikalnymi hiperłączami, \z ukrywa prowadnice tabulacji i numery stron w widoku układu sieciowego, a \u używa poziomu konspektu zastosowanego do akapitów.

    builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
    
  3. Rozpocznij zawartość na nowej stronie - insertBreak(BreakType.PAGE_BREAK) przenosi rzeczywiste ciało dokumentu na stronę po spisie treści, tak aby spis treści miał własną stronę.

    builder.insertBreak(BreakType.PAGE_BREAK);
    
  4. Dodaj treść w stylu nagłówka - Ustawienie setStyleIdentifier w formacie akapitu buildera na HEADING_1, HEADING_2 lub HEADING_3 przed wywołaniem writeln powoduje tworzenie akapitów stylizowanych odpowiednim wbudowanym stylem nagłówka, które pole TOC skanuje w poszukiwaniu wpisów.

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 1");

Szczegółowa dokumentacja API jest dostępna na stronie Referencja API.

  1. Aktualizuj pola i zapisz - doc.updateFields() wypełnia spis treści wpisami i numerami stron, teraz gdy nagłówki istnieją, a doc.save zapisuje dokument na dysku.
    doc.updateFields();
    doc.save(dataDir + "TableOfContents.docx");
    

Instalowanie i konfigurowanie Conholdate.Total for Java

Dodaj repozytorium Maven Conholdate oraz zależność SDK do swojego pliku pom.xml:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

Pobierz najnowszy pakiet SDK ze strony pobierania. SDK wymaga Java 8 lub nowszej i działa na dowolnej standardowej maszynie JVM. Nie są potrzebne dodatkowe komponenty uruchomieniowe.

Najlepsze praktyki generowania spisu treści Word w Javie

  • Używaj spójnych stylów nagłówków - Spis treści (TOC) wykrywa akapity sformatowane wbudowanymi poziomami nagłówków (Heading 1, Heading 2, itp.). Upewnij się, że dokument źródłowy używa tych stylów, aby zapewnić niezawodne generowanie pozycji.
  • Ogranicz głębokość nagłówków - Dodanie zbyt wielu poziomów może sprawić, że spis treści będzie nieporęczny. Typowe raporty używają poziomów 1‑3, jak pokazano w przełączniku \o "1-3" w przykładzie.
  • Włącz hiperłącza - Dodanie przełącznika \h tworzy klikalne pozycje, co usprawnia nawigację w gotowym dokumencie.
  • Zawsze wywołuj updateFields po wstawieniu - Nowo wstawione pole spisu treści jest puste, dopóki nie zostanie uruchomione doc.updateFields(), więc wywołaj je po dodaniu całej zawartości nagłówków.
  • Sprawdź po wstawieniu - Otwórz wygenerowany plik DOCX i zaktualizuj pola (Ctrl +A, F9), aby potwierdzić, że numery stron są prawidłowe, szczególnie po dalszych edycjach.
  • Ponownie używaj łańcucha przełączników - Jeśli generujesz wiele dokumentów w partii, zbuduj łańcuch przełączników raz i używaj go ponownie w kolejnych wywołaniach, aby zachować spójność formatowania.

Podsumowanie

Dodanie spisu treści do dokumentu Word w Javie staje się proste dzięki Conholdate.Total for Java. Tworząc dokument, wstawiając pole TOC z odpowiednimi przełącznikami, dodając treść sformatowaną jako nagłówki oraz wywołując updateFields, możesz zautomatyzować tworzenie profesjonalnych raportów i podręczników. Pamiętaj, aby zainstalować SDK, stosować zalecenia najlepszych praktyk i przetestować wygenerowany spis treści w docelowym środowisku. W przypadku wdrożeń produkcyjnych potrzebna będzie licencjonowana kopia; szczegóły cenowe dostępne są na strona cenowa oraz tymczasową licencję można uzyskać na strona tymczasowej licencji.

Najczęściej zadawane pytania

  • Jaki jest najprostszy sposób dodania spisu treści do dokumentu Word w Javie? Wywołaj builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u"), dodaj akapity sformatowane jako nagłówki, a następnie wywołaj doc.updateFields() przed zapisaniem, jak pokazano w przykładzie kodu.

  • Jak mogę kontrolować, które poziomy nagłówków pojawiają się w spisie treści? Zmień zakres poziomów w przełączniku \o ciągu przekazywanego do insertTableOfContents, na przykład \o "1-2" aby uwzględnić tylko poziomy 1 i 2.

  • Czy można wygenerować spis treści dla szablonu Word, który zostanie wypełniony później? Tak. Wstaw pole spisu treści do pliku szablonu przed wypełnieniem dynamicznej zawartości; wywołanie updateFields() po dodaniu nagłówków automatycznie wypełni spis treści.

  • Czy potrzebuję połączenia z internetem, aby używać tego SDK? Nie. Conholdate.Total for Java jest lokalną biblioteką, która działa na Twoim serwerze lub komputerze stacjonarnym bez żadnych zewnętrznych wywołań usług.

Czytaj więcej