Zarządzaj tabelami prezentacji w Pythonie
Wstęp
Tabela w programie PowerPoint jest wydajnym sposobem prezentacji informacji. Informacje ułożone w siatce komórek (wiersze i kolumny) są przejrzyste i łatwe do zrozumienia.
Aspose.Slides udostępnia klasę Table, klasę Cell oraz inne powiązane typy, które pomagają tworzyć, aktualizować i zarządzać tabelami w dowolnej prezentacji.
Tworzenie tabel od podstaw
W tej sekcji przedstawiono, jak utworzyć tabelę od podstaw w Aspose.Slides, dodając kształt tabeli do slajdu, definiując jej wiersze i kolumny oraz ustalając dokładne rozmiary. Zobaczysz także, jak wypełniać komórki tekstem, dostosowywać wyrównanie i obramowania oraz personalizować wygląd tabeli.
- Utwórz instancję klasy Presentation.
- Pobierz odwołanie do slajdu według jego indeksu.
- Zdefiniuj tablicę szerokości kolumn.
- Zdefiniuj tablicę wysokości wierszy.
- Dodaj Table do slajdu.
- Przejdź po każdej Cell i sformatuj jej górne, dolne, prawe i lewe obramowanie.
- Połącz komórki pierwszych dwóch wierszy i pierwszych dwóch kolumn w jedną komórkę.
- Uzyskaj dostęp do TextFrame komórki Cell.
- Dodaj tekst do TextFrame.
- Zapisz zmodyfikowaną prezentację.
Poniższy przykład w języku Python pokazuje, jak utworzyć tabelę w prezentacji:
import aspose.pydrawing as draw
import aspose.slides as slides
# Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
with slides.Presentation() as presentation:
# Uzyskaj dostęp do pierwszego slajdu.
slide = presentation.slides[0]
# Zdefiniuj szerokości kolumn i wysokości wierszy.
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
# Dodaj kształt tabeli do slajdu.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
# Ustaw format obramowania dla każdej komórki.
for row in table.rows:
for cell in row:
cell.cell_format.border_top.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_top.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_top.width = 5
cell.cell_format.border_bottom.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_bottom.fill_format.solid_fill_color.color= draw.Color.red
cell.cell_format.border_bottom.width = 5
cell.cell_format.border_left.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_left.fill_format.solid_fill_color.color =draw.Color.red
cell.cell_format.border_left.width = 5
cell.cell_format.border_right.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_right.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_right.width = 5
# Połącz komórki od (wiersz 0, kolumna 0) do (wiersz 1, kolumna 1).
table.merge_cells(table.rows[0][0], table.rows[1][1], False)
# Dodaj tekst do połączonej komórki.
table.rows[0][0].text_frame.text = "Merged Cells"
# Zapisz prezentację na dysk.
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Numeracja w standardowych tabelach
W standardowej tabeli numeracja komórek jest prosta i zaczyna się od zera. Pierwsza komórka w tabeli ma indeks (0, 0) (kolumna 0, wiersz 0).
Na przykład w tabeli mającej 4 kolumny i 4 wiersze komórki są numerowane w następujący sposób:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
Poniższy przykład w języku Python pokazuje, jak odwoływać się do komórek przy użyciu tej numeracji zaczynającej się od zera:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Uzyskaj dostęp do pierwszego slajdu.
slide = presentation.slides[0]
# Dodaj tabelę z 4 kolumnami i 4 wierszami.
table = slide.shapes.add_table(100, 50, [50, 50, 50, 50], [30, 30, 30, 30])
for row_index in range(len(table.rows)):
for column_index in range(len(table.rows[row_index])):
cell = table.rows[row_index][column_index]
cell.text_frame.text = f"({column_index}, {row_index})"
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Uzyskiwanie dostępu do istniejącej tabeli
W tej sekcji wyjaśniono, jak zlokalizować i pracować z istniejącą tabelą w prezentacji przy użyciu Aspose.Slides. Dowiesz się, jak znaleźć tabelę na slajdzie, uzyskać dostęp do jej wierszy, kolumn i komórek oraz zaktualizować zawartość lub formatowanie.
- Utwórz instancję klasy Presentation.
- Pobierz odwołanie do slajdu zawierającego tabelę według jego indeksu.
- Przeglądaj wszystkie obiekty Shape aż znajdziesz tabelę.
- Użyj obiektu Table, aby pracować z tabelą.
- Zapisz zmodyfikowaną prezentację.
Note
Jeśli slajd zawiera wiele tabel, lepiej wyszukać potrzebną tabelę po właściwościalternative_text.
Poniższy przykład w języku Python pokazuje, jak uzyskać dostęp i pracować z istniejącą tabelą:
import aspose.pydrawing as draw
import aspose.slides as slides
# Utwórz instancję klasy Presentation, aby wczytać plik PPTX.
with slides.Presentation("sample.pptx") as presentation:
# Uzyskaj dostęp do pierwszego slajdu.
slide = presentation.slides[0]
table = None
# Iteruj po kształtach i odwołaj się do pierwszej znalezionej tabeli.
for shape in slide.shapes:
if isinstance(shape, slides.Table):
table = shape
break
# Ustaw tekst pierwszej komórki w pierwszym wierszu.
if table is not None:
table.rows[0][0].text_frame.text = "Found"
# Zapisz zmodyfikowaną prezentację na dysk.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Znajdź komórkę, do której należy ramka tekstowa
Gdy ogólny kod przetwarzający tekst otrzymuje TextFrame z tabeli, użyj właściwości TextFrame.parent_cell, aby pobrać należącą do niej Cell. Dla ramki tekstowej w komórce tabeli właściwość TextFrame.parent_cell jest ustawiona, a TextFrame.parent_shape ma wartość None, mimo że sama tabela jest kształtem.
Współrzędne komórki są dostępne poprzez tylko do odczytu właściwości Cell.first_column_index i Cell.first_row_index. Właściwość TextFrame.parent_cell jest również tylko do odczytu: umożliwia nawigację do właściciela, ale nie zmienia własności. Zawsze sprawdzaj, czy zwrócona komórka nie jest None, zanim jej użyjesz.
Kompletny przykład identyfikujący właścicieli komórek tabeli i kształtów, w tym kształty powiązane z węzłami SmartArt, znajduje się w sekcji Search and Replace Text.
Wyrównywanie tekstu w tabelach
W tej sekcji przedstawiono, jak kontrolować położenie tekstu wewnątrz komórek tabeli przy użyciu Aspose.Slides. Nauczysz się kotwiczyć tekst pionowo w komórce oraz zmieniać kierunek, w jakim tekst jest wyświetlany.
- Utwórz instancję klasy Presentation.
- Pobierz odwołanie do slajdu według jego indeksu.
- Dodaj obiekt Table do slajdu.
- Uzyskaj dostęp do obiektu Cell w tabeli.
- Wyśrodkuj tekst pionowo w komórce i ustaw kierunek tekstu.
- Zapisz zmodyfikowaną prezentację.
Poniższy przykład w języku Python pokazuje, jak wyrównać tekst w tabeli:
import aspose.pydrawing as draw
import aspose.slides as slides
# Utwórz instancję klasy Presentation.
with slides.Presentation() as presentation:
# Uzyskaj dostęp do pierwszego slajdu.
slide = presentation.slides[0]
# Zdefiniuj szerokości kolumn i wysokości wierszy.
column_widths = [40, 120, 120, 120]
row_heights = [100, 100, 100, 100]
# Dodaj kształt tabeli do slajdu.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
table.rows[0][0].text_frame.text = "Numbers"
table.rows[1][0].text_frame.text = "10"
table.rows[2][0].text_frame.text = "20"
table.rows[3][0].text_frame.text = "30"
# Wyśrodkuj tekst i ustaw pionową orientację.
cell = table.rows[0][0]
cell.text_anchor_type = slides.TextAnchorType.CENTER
cell.text_vertical_type = slides.TextVerticalType.VERTICAL270
# Zapisz prezentację na dysk.
presentation.save("aligned_cell.pptx", slides.export.SaveFormat.PPTX)
Ustaw formatowanie tekstu na poziomie tabeli
W tej sekcji wyjaśniono, jak zastosować formatowanie tekstu na poziomie tabeli w Aspose.Slides, aby każda komórka dziedziczyła spójny, jednolity styl. Nauczysz się globalnie ustawiać rozmiary czcionek, wyrównania i marginesy.
- Utwórz instancję klasy Presentation.
- Pobierz odwołanie do slajdu według jego indeksu.
- Dodaj Table do slajdu.
- Ustaw rozmiar czcionki (wysokość czcionki) dla tekstu.
- Ustaw wyrównanie akapitu i marginesy.
- Ustaw pionową orientację tekstu.
- Zapisz zmodyfikowaną prezentację.
Poniższy przykład w języku Python pokazuje, jak zastosować preferowane opcje formatowania do tekstu w tabeli:
import aspose.pydrawing as draw
import aspose.slides as slides
# Tworzy instancję klasy Presentation
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
# Ustaw rozmiar czcionki dla wszystkich komórek tabeli.
portion_format = slides.PortionFormat()
portion_format.font_height = 25
table.set_text_format(portion_format)
# Ustaw tekst wyrównany do prawej i prawy margines dla wszystkich komórek tabeli.
paragraph_format = slides.ParagraphFormat()
paragraph_format.alignment = slides.TextAlignment.RIGHT
paragraph_format.margin_right = 20
table.set_text_format(paragraph_format)
# Ustaw pionową orientację tekstu dla wszystkich komórek tabeli.
text_frame_format = slides.TextFrameFormat()
text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL
table.set_text_format(text_frame_format)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Zastosuj wbudowane style tabel
Aspose.Slides umożliwia formatowanie tabel przy użyciu wbudowanych stylów bezpośrednio w kodzie. Przykład demonstruje tworzenie tabeli, zastosowanie wbudowanego stylu i zapis wyniku — efektywny sposób zapewnienia jednolitego, profesjonalnego formatowania.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(10, 10, [100, 150], [5, 5, 5])
table.style_preset = slides.TableStylePreset.DARK_STYLE1
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Zablokuj proporcje tabel
Proporcje kształtu to stosunek jego wymiarów. Aspose.Slides udostępnia właściwość aspect_ratio_locked, która pozwala zablokować proporcje tabel i innych kształtów.
Poniższy przykład w języku Python pokazuje, jak zablokować proporcje tabeli:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
table.shape_lock.aspect_ratio_locked = not table.shape_lock.aspect_ratio_locked
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
FAQ
Czy mogę włączyć kierunek od prawej do lewej (RTL) dla całej tabeli i tekstu w jej komórkach?
Tak. Tabela udostępnia właściwość right_to_left, a akapity mają ParagraphFormat.right_to_left. Użycie obu zapewnia prawidłowy porządek RTL i renderowanie wewnątrz komórek.
Jak mogę uniemożliwić użytkownikom przenoszenie lub zmianę rozmiaru tabeli w finalnym pliku?
Użyj shape locks, aby wyłączyć przenoszenie, zmianę rozmiaru, zaznaczanie itp. Te blokady dotyczą również tabel.
Czy wstawianie obrazu jako tła w komórce jest obsługiwane?
Tak. Możesz ustawić picture fill dla komórki; obraz pokryje obszar komórki zgodnie z wybranym trybem (rozciąganie lub powielanie).