tworzyć tabele w dokumentach Word przy użyciu języka Java

Microsoft Word to popularny edytor tekstu służący do tworzenia różnego rodzaju dokumentów. Dokumenty te mogą zawierać kilka typów elementów, w tym tekst, obrazy, tabele i wykresy. Jeśli chodzi o automatyzację tworzenia i manipulowania dokumentami w języku Java, możesz potrzebować łatwego rozwiązania do tworzenia tabel w dokumentach programu Word. Dlatego w tym poście na blogu przyjrzymy się sposobom tworzenia tabel w dokumentach programu Word w aplikacji Java.

Biblioteka Java do tworzenia tabel w dokumentach programu Word

Aspose.Words for Java to interfejs API, który umożliwia programistom Java programową pracę z dokumentami Microsoft Word. Zapewnia szeroką gamę funkcji do tworzenia, modyfikowania i manipulowania dokumentami Word, co czyni go cennym narzędziem do automatyzacji zadań związanych z generowaniem i przetwarzaniem dokumentów. Będziemy używać tej biblioteki do wstawiania tabel do dokumentu programu Word.

Możesz pobrać bibliotekę lub zainstalować ją, korzystając z następujących konfiguracji Mavena.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Utwórz tabelę w dokumencie programu Word w Javie

Istnieją dwa sposoby tworzenia tabel w dokumentach programu Word przy użyciu Aspose.Words for Java:

  • Korzystanie z narzędzia DocumentBuilder
  • Korzystanie z DOM (obiektowego modelu dokumentu)

Możesz wybrać metodę, która najlepiej odpowiada Twoim wymaganiom. Przyjrzyjmy się więc szczegółowo każdej z tych metod.

Utwórz tabelę za pomocą narzędzia DocumentBuilder

Klasa DocumentBuilder umożliwia szybkie i łatwe tworzenie dynamicznych dokumentów od podstaw lub przetwarzanie istniejących dokumentów. Oferuje szereg funkcji do wstawiania różnych elementów treści, takich jak tekst, pola wyboru, obiekty OLE, akapity, listy, tabele, obrazy i inne.

Poniżej przedstawiono kroki, w których używana jest klasa DocumentBuilder do tworzenia tabeli w dokumencie programu Word w Javie.

  • Utwórz obiekt klasy Document, aby załadować lub utworzyć dokument programu Word.
  • Utwórz obiekt klasy DocumentBuilder.
  • Uruchom tabelę za pomocą metody DocumentBuilder.startTable().
  • Wstaw komórkę za pomocą metody DocumentBuilder.insertCell().
  • (Opcjonalnie) Zastosuj formatowanie komórki, np. czcionkę i wyrównanie.
  • Wstaw tekst do komórki za pomocą metody DocumentBuilder.write().
  • W razie potrzeby powtórz wstawianie komórek i tekstu do komórek.
  • Zakończ wiersz po zakończeniu wstawiania komórek przy użyciu metody DocumentBuilder.endRow().
  • Zakończ tabelę po wstawieniu wszystkich wierszy metodą DocumentBuilder.endTable().
  • Zapisz dokument programu Word za pomocą metody Document.save().

Poniższy fragment kodu pokazuje, jak utworzyć tabelę w dokumencie programu Word przy użyciu języka Java.

// Utwórz lub załaduj dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Utwórz nową tabelę i wstaw komórkę.
Table table = builder.startTable();
builder.insertCell();

// Jeśli w tabeli znajduje się co najmniej jeden wiersz, należy zastosować formatowanie całej tabeli.
table.setLeftIndent(20.0);

// Ustaw wysokość i zdefiniuj regułę wysokości dla wiersza nagłówka.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// Nie musimy określać szerokości tej komórki, ponieważ jest ona dziedziczona z poprzedniej komórki.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// Zresetuj wysokość i zdefiniuj inną regułę wysokości dla treści tabeli.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// Zresetuj formatowanie czcionki.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// Końcowy stół.
builder.endTable();

// Zapisz dokument.
doc.save("table.docx");

Poniżej znajduje się zrzut ekranu tabeli, którą utworzyliśmy przy użyciu powyższego przykładowego kodu.

Tabela w dokumencie Word

Utwórz tabelę za pomocą DOM

Document Object Model (DOM) to reprezentacja dokumentu Word w pamięci, która umożliwia programowe odczytywanie, manipulowanie i modyfikowanie zawartości i formatowania dokumentu Word. Poniższe kroki pokazują, jak utworzyć tabelę w dokumencie programu Word przy użyciu modelu DOM.

  • Utwórz obiekt klasy Document, aby załadować lub utworzyć dokument programu Word.
  • Utwórz obiekt klasy Table i wstaw tabelę do dokumentu za pomocą metody Document.getFirstSection().getBody().appendChild(Table).
  • Utwórz obiekt klasy Row i wstaw go do tabeli za pomocą metody Table.appendChild(Row).
  • Utwórz obiekt klasy Cell, ustaw opcje formatowania i dodaj tekst do komórki.
  • Wstaw komórkę do wiersza za pomocą metody Row.appendChild(Cell).
  • Powtórz ten proces dla dowolnej liczby wierszy.
  • Zapisz dokument programu Word za pomocą metody Document.save().

Poniższy fragment kodu pokazuje, jak utworzyć tabelę w dokumencie programu Word w Javie.

// Utwórz lub załaduj dokument.
Document doc = new Document();
        
// Zaczynamy od utworzenia obiektu tabeli. Pamiętaj, że musimy przekazać obiekt document
// do konstruktora każdego węzła. Dzieje się tak, ponieważ każdy węzeł, który tworzymy, musi należeć
// do jakiegoś dokumentu.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// Tutaj moglibyśmy wywołać SureMinimum, aby utworzyć dla nas wiersze i komórki. Ta metoda jest stosowana
// aby upewnić się, że określony węzeł jest prawidłowy. W takim przypadku prawidłowa tabela powinna zawierać co najmniej jeden wiersz i jedną komórkę.

// Zamiast tego zajmiemy się tworzeniem wiersza i tabeli samodzielnie.
// Byłby to najlepszy sposób, aby to zrobić, gdybyśmy tworzyli tabelę wewnątrz algorytmu.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// Możemy teraz zastosować dowolne ustawienia automatycznego dopasowania.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// Następnie powtórzylibyśmy proces dla pozostałych komórek i wierszy tabeli.
// Możemy także przyspieszyć działanie klonując istniejące komórki i wiersze.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Zapisz dokument.
doc.save("table.docx");

Wstaw zagnieżdżoną tabelę w dokumentach programu Word

Może się również zdarzyć, że konieczne będzie utworzenie tabeli zagnieżdżonej, która będzie umieszczona w komórce tabeli nadrzędnej. Można to zrobić bez konieczności przechodzenia przez skomplikowany proces. Najpierw utwórz tabelę nadrzędną, a następnie wywołaj metodę DocumentBuilder.moveTo(Cell.getFirstParagraph()), aby przenieść formant do żądanej komórki tabeli nadrzędnej. Po zakończeniu utwórz nową tabelę w ten sam sposób.

Poniższy fragment kodu pokazuje, jak utworzyć zagnieżdżoną tabelę w dokumencie programu Word przy użyciu języka Java.

// Utwórz lub załaduj dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Wstaw komórkę.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// To wywołanie jest ważne, aby utworzyć zagnieżdżoną tabelę w pierwszej tabeli. 
// Bez tego wywołania komórki wstawione poniżej zostaną dołączone do tabeli zewnętrznej.
builder.endTable();

// Przejdź do pierwszej komórki tabeli zewnętrznej.
builder.moveTo(cell.getFirstParagraph());

// Zbuduj wewnętrzny stół.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// Zapisz dokument.
doc.save("table.docx");

Poniżej znajduje się zrzut ekranu zagnieżdżonej tabeli, którą utworzyliśmy powyżej.

Nested Table in a Word Document

Utwórz tabelę programu Word z kodu HTML w Javie

Możesz także utworzyć tabelę w dokumencie programu Word przy użyciu ciągu HTML. Oto kroki, które należy wykonać.

  • Utwórz obiekt klasy Document, aby załadować lub utworzyć dokument programu Word.
  • Utwórz obiekt klasy DocumentBuilder.
  • Wstaw ciąg HTML tabeli do dokumentu za pomocą metody DocumentBuilder.insertHtml(String).
  • Na koniec zapisz dokument za pomocą metody Document.save().

Poniżej znajduje się fragment kodu umożliwiający wygenerowanie tabeli programu Word na podstawie ciągu HTML.

// Utwórz lub załaduj dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Należy pamiętać, że ustawienie AutoFitSettings nie ma zastosowania do tabel wstawionych z formatu HTML.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// Zapisz dokument.
doc.save("table.docx");

Zdobądź bezpłatną licencję

Możesz uzyskać licencję tymczasową na używanie Aspose.Words for Java bez ograniczeń ewaluacyjnych.

Wniosek

W tym poście na blogu omówiliśmy, jak tworzyć tabele w dokumentach programu Word przy użyciu języka Java. Widziałeś, jak utworzyć tabelę za pomocą narzędzia do tworzenia dokumentów lub DOM, utworzyć tabelę zagnieżdżoną i utworzyć tabelę z ciągu HTML. Instalując bibliotekę i postępując zgodnie ze wskazówkami, możesz łatwo zintegrować funkcję tworzenia tabel z aplikacją Java.

Aspose.Words for Java zapewnia wiele innych funkcji i opcji formatowania, umożliwiając łatwe tworzenie bogatych i złożonych dokumentów. Aby dowiedzieć się więcej o Aspose.Words for Java, przejrzyj jego obszerną dokumentację i przykłady. W razie jakichkolwiek pytań prosimy o kontakt za pośrednictwem naszego forum.

Zobacz też