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:
Utwórz dokument i builder -
Documentreprezentuje plik Word w pamięci, aDocumentBuilderudostępnia metody do wstawiania treści i pól do niego.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc);Wstaw pole spisu treści -
insertTableOfContentszapisuje 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,\hsprawia, że pozycje są klikalnymi hiperłączami,\zukrywa prowadnice tabulacji i numery stron w widoku układu sieciowego, a\uużywa poziomu konspektu zastosowanego do akapitów.builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");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);Dodaj treść w stylu nagłówka - Ustawienie
setStyleIdentifierw formacie akapitu buildera naHEADING_1,HEADING_2lubHEADING_3przed wywołaniemwritelnpowoduje 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.
- Aktualizuj pola i zapisz -
doc.updateFields()wypełnia spis treści wpisami i numerami stron, teraz gdy nagłówki istnieją, adoc.savezapisuje 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
\htworzy 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łajdoc.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
\ociągu przekazywanego doinsertTableOfContents, 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.
