Kelola Tabel Presentasi di Python
Pendahuluan
Tabel di PowerPoint adalah cara yang efisien untuk menampilkan informasi. Informasi dalam susunan sel (diatur dalam baris dan kolom) bersifat langsung dan mudah dipahami.
Aspose.Slides menyediakan kelas Table kelas Cell dan tipe lainnya yang memungkinkan Anda membuat, memperbarui, dan mengelola tabel dalam semua jenis presentasi.
Membuat Tabel dari Awal
- Buat sebuah instance dari kelas Presentation .
- Dapatkan referensi ke slide berdasarkan indeksnya.
- Tentukan daftar lebar kolom.
- Tentukan daftar tinggi baris.
- Tambahkan objek Table ke slide melalui metode addTable .
- Iterasi setiap Cell untuk menerapkan format pada batas atas, bawah, kanan, dan kiri.
- Gabungkan dua sel pertama pada baris pertama tabel.
- Akses TextFrame dari sebuah Cell .
- Tambahkan beberapa teks ke TextFrame .
- Simpan presentasi yang telah dimodifikasi.
Kode Python ini menunjukkan cara membuat tabel dalam sebuah presentasi:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat
from java.awt import Color
# Membuat instance kelas Presentation yang mewakili file PPTX
presentation = Presentation()
try:
# Mengakses slide pertama
slide = presentation.getSlides().get_Item(0)
# Mendefinisikan kolom dengan lebar dan baris dengan tinggi
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
# Menambahkan shape tabel ke slide
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
# Mengatur format batas untuk setiap sel
for row in table.getRows():
for cell in row:
cell_format = cell.getCellFormat()
cell_format.getBorderTop().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderTop().setWidth(5)
cell_format.getBorderBottom().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderBottom().setWidth(5)
cell_format.getBorderLeft().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderLeft().setWidth(5)
cell_format.getBorderRight().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderRight().setWidth(5)
# Menggabungkan sel 1 & 2 pada baris 1
table.mergeCells(table.getRows().get_Item(0).get_Item(0), table.getRows().get_Item(0).get_Item(1), False)
# Menambahkan teks ke sel yang digabungkan
table.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells")
# Menyimpan presentasi ke Disk
presentation.save("table.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Penomoran dalam Tabel Standar
Dalam tabel standar, penomoran sel bersifat langsung dan berbasis nol. Sel pertama dalam tabel memiliki indeks 0,0 (kolom 0, baris 0).
Sebagai contoh, sel dalam tabel dengan 4 kolom dan 4 baris diberi nomor sebagai berikut:
| (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) |
Kode Python ini menunjukkan cara membuat tabel dengan penomoran sel standar:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat
from java.awt import Color
# Membuat instance kelas Presentation yang mewakili file PPTX
presentation = Presentation()
try:
# Mengakses slide pertama
slide = presentation.getSlides().get_Item(0)
# Mendefinisikan kolom dengan lebar dan baris dengan tinggi
column_widths = [70, 70, 70, 70]
row_heights = [70, 70, 70, 70]
# Menambahkan shape tabel ke slide
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
# Mengatur format batas untuk setiap sel
for row in table.getRows():
for cell in row:
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderTop().setWidth(5)
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderBottom().setWidth(5)
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderLeft().setWidth(5)
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderRight().setWidth(5)
# Menyimpan presentasi ke disk
presentation.save("StandardTables_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Mengakses Tabel yang Ada
-
Buat sebuah instance dari kelas Presentation .
-
Dapatkan referensi ke slide yang berisi tabel melalui indeksnya.
-
Inisialisasi variabel untuk objek Table dan setel ke
None. -
Iterasi semua objek Shape hingga tabel ditemukan.
Jika Anda menduga slide yang sedang Anda kerjakan berisi satu tabel, Anda dapat memeriksa semua shape yang ada. Ketika sebuah shape diidentifikasi sebagai tabel, Anda dapat menggunakannya sebagai objek Table . Tetapi jika slide yang Anda kerjakan berisi beberapa tabel, maka lebih baik mencari tabel yang Anda butuhkan melalui getAlternativeText .
-
Gunakan objek Table untuk bekerja dengan tabel. Dalam contoh di bawah, kami memperbarui teks di kolom pertama baris kedua.
-
Simpan presentasi yang telah dimodifikasi.
Kode Python ini menunjukkan cara mengakses dan bekerja dengan tabel yang ada:
import jpype
import asposeslides
if not jpway.isJVMStarted():
jpway.startJVM()
from asposeslides.api import Presentation, SaveFormat, Table
# Membuat instance kelas Presentation yang mewakili file PPTX
presentation = Presentation("UpdateExistingTable.pptx")
try:
# Mengakses slide pertama
slide = presentation.getSlides().get_Item(0)
# Menginisialisasi referensi tabel.
table = None
# Mengiterasi shape dan mengatur referensi ke tabel yang ditemukan
for shape in slide.getShapes():
if isinstance(shape, Table):
table = shape
# Mengatur teks untuk kolom pertama baris kedua
table.get_Item(0, 1).getTextFrame().setText("New")
# Menyimpan presentasi yang dimodifikasi ke disk
presentation.save("table1_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Temukan Sel yang Memiliki Text Frame
Ketika kode pemrosesan teks umum menerima sebuah TextFrame dari sebuah tabel, gunakan metode TextFrame.getParentCell untuk mendapatkan Cell pemiliknya. Untuk text frame sel tabel, TextFrame.getParentCell mengembalikan pemilik dan TextFrame.getParentShape mengembalikan None, meskipun tabel itu sendiri merupakan sebuah shape.
Koordinat sel tersedia melalui metode read‑only Cell.getFirstColumnIndex dan Cell.getFirstRowIndex . TextFrame.getParentCell juga memberikan navigasi read‑only: ia mengembalikan pemilik tetapi tidak mengubah kepemilikan. Selalu periksa apakah sel yang dikembalikan bernilai None sebelum menggunakannya.
Untuk contoh lengkap yang mengidentifikasi pemilik sel tabel dan shape, termasuk shape yang terkait dengan node SmartArt, lihat Search and Replace Text .
Menyelaraskan Teks dalam Tabel
- Buat sebuah instance dari kelas Presentation .
- Dapatkan referensi ke slide berdasarkan indeksnya.
- Tambahkan objek Table ke slide.
- Akses objek TextFrame dari tabel.
- Akses Paragraph dari objek TextFrame .
- Selaraskan teks secara vertikal.
- Simpan presentasi yang telah dimodifikasi.
Kode Python ini menunjukkan cara menyelaraskan teks dalam tabel:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat, TextAnchorType, TextVerticalType
from java.awt import Color
# Membuat instance kelas Presentation
presentation = Presentation()
try:
# Mendapatkan slide pertama
slide = presentation.getSlides().get_Item(0)
# Mendefinisikan kolom dengan lebar dan baris dengan tinggi
column_widths = [120, 120, 120, 120]
row_heights = [100, 100, 100, 100]
# Menambahkan shape tabel ke slide
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
table.get_Item(1, 0).getTextFrame().setText("10")
table.get_Item(2, 0).getTextFrame().setText("20")
table.get_Item(3, 0).getTextFrame().setText("30")
# Mengakses text frame
text_frame = table.get_Item(0, 0).getTextFrame()
# Mengakses paragraf pertama dalam text frame.
paragraph = text_frame.getParagraphs().get_Item(0)
# Mengakses bagian pertama dalam paragraf.
portion = paragraph.getPortions().get_Item(0)
portion.setText("Text here")
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
# Menyelaraskan teks secara vertikal
cell = table.get_Item(0, 0)
cell.setTextAnchorType(TextAnchorType.Center)
cell.setTextVerticalType(TextVerticalType.Vertical270)
# Menyimpan presentasi ke disk
presentation.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Mengatur Pemformatan Teks pada Tingkat Tabel
- Buat sebuah instance dari kelas Presentation .
- Dapatkan referensi ke slide berdasarkan indeksnya.
- Akses objek Table dari slide.
- Setel tinggi font teks dengan setFontHeight .
- Setel perataan dan margin kanan dengan setAlignment dan setMarginRight .
- Setel tipe teks vertikal dengan setTextVerticalType .
- Simpan presentasi yang telah dimodifikasi.
Kode Python ini menunjukkan cara menerapkan opsi pemformatan pilihan Anda pada teks dalam tabel:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ParagraphFormat, PortionFormat, Presentation, SaveFormat, TextAlignment, TextFrameFormat, TextVerticalType, Table
# Membuat instance kelas Presentation
presentation = Presentation("simpletable.pptx")
try:
# Mari asumsikan bahwa shape pertama pada slide pertama adalah tabel
shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(shape, Table):
table = shape
# Mengatur tinggi font sel tabel
portion_format = PortionFormat()
portion_format.setFontHeight(25)
table.setTextFormat(portion_format)
# Mengatur perataan teks sel tabel dan margin kanan dalam satu pemanggilan
paragraph_format = ParagraphFormat()
paragraph_format.setAlignment(TextAlignment.Right)
paragraph_format.setMarginRight(20)
table.setTextFormat(paragraph_format)
# Mengatur tipe teks vertikal sel tabel
text_frame_format = TextFrameFormat()
text_frame_format.setTextVerticalType(TextVerticalType.Vertical)
table.setTextFormat(text_frame_format)
presentation.save("result.pptx", SaveFormat.Pptx)
else:
print("The first shape is not a table.")
finally:
presentation.dispose()
Mendapatkan Properti Gaya Tabel
Aspose.Slides memungkinkan Anda mengambil properti gaya untuk sebuah tabel sehingga Anda dapat menggunakan detail tersebut pada tabel lain atau di tempat lain. Kode Python ini menunjukkan cara mendapatkan properti gaya dari gaya tabel preset:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TableStylePreset
presentation = Presentation()
try:
table = presentation.getSlides().get_Item(0).getShapes().addTable(10, 10, [100, 150], [5, 5, 5])
table.setStylePreset(TableStylePreset.DarkStyle1) # ubah tema preset gaya default
# Mendapatkan preset gaya tabel
style_preset = table.getStylePreset()
print("Table style preset: ", style_preset)
# Menerapkan preset gaya yang diambil ke tabel lain
another_table = presentation.getSlides().get_Item(0).getShapes().addTable(10, 100, [100, 150], [5, 5, 5])
another_table.setStylePreset(style_preset)
presentation.save("table.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Mengunci Rasio Aspek Tabel
Rasio aspek dari sebuah bentuk geometris adalah perbandingan ukurannya dalam dimensi yang berbeda. Aspose.Slides menyediakan metode setAspectRatioLocked untuk memungkinkan Anda mengunci pengaturan rasio aspek untuk tabel dan bentuk lainnya.
Kode Python ini menunjukkan cara mengunci rasio aspek untuk tabel:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, Table
presentation = Presentation("pres.pptx")
try:
shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(shape, Table):
table = shape
print("Lock aspect ratio set: ", table.getGraphicalObjectLock().getAspectRatioLocked())
table.getGraphicalObjectLock().setAspectRatioLocked(not table.getGraphicalObjectLock().getAspectRatioLocked()) # balik
print("Lock aspect ratio set: ", table.getGraphicalObjectLock().getAspectRatioLocked())
presentation.save("pres-out.pptx", SaveFormat.Pptx)
else:
print("The first shape is not a table.")
finally:
presentation.dispose()
FAQ
Apakah saya dapat mengaktifkan arah baca kanan‑ke‑kiri (RTL) untuk seluruh tabel dan teks di dalam selnya?
Ya. Tabel menyediakan metode setRightToLeft , dan paragraf memiliki ParagraphFormat.setRightToLeft . Menggunakan keduanya memastikan urutan RTL yang benar serta rendering yang tepat di dalam sel.
Bagaimana cara mencegah pengguna memindahkan atau mengubah ukuran tabel dalam file akhir?
Gunakan shape locks untuk menonaktifkan pemindahan, pengubahan ukuran, pemilihan, dll. Kunci ini juga berlaku pada tabel.
Apakah menyisipkan gambar di dalam sel sebagai latar belakang didukung?
Ya. Anda dapat mengatur picture fill untuk sebuah sel; gambar akan menutupi area sel sesuai mode yang dipilih (stretch atau tile).