Kelola Tabel Presentasi di Java

Pendahuluan

Tabel dalam PowerPoint mengatur informasi menjadi baris dan kolom, memudahkan pembacaan dan perbandingan nilai.

Aspose.Slides menyediakan kelas Table , antarmuka ITable , kelas Cell , antarmuka ICell , dan tipe lainnya untuk memungkinkan Anda membuat, memperbarui, dan mengelola tabel dalam presentasi.

Membuat Tabel dari Awal

Buat tabel dengan menentukan posisinya, lebar kolom, dan tinggi baris. Setelah menambahkannya ke sebuah slide, Anda dapat memformat batas sel, menggabungkan sel, dan menyisipkan teks.

  1. Buat instance dari kelas Presentation .
  2. Dapatkan referensi ke slide berdasarkan indeksnya.
  3. Tentukan array lebar kolom dalam poin.
  4. Tentukan array tinggi baris dalam poin.
  5. Tambahkan objek ITable ke slide melalui metode addTable .
  6. Iterasikan setiap ICell untuk menerapkan pemformatan pada batas atas, bawah, kanan, dan kiri.
  7. Gabungkan dua sel pertama pada baris pertama tabel.
  8. Akses sel yang digabung melalui metode getTextFrame .
  9. Setel teks pada sel yang digabung.
  10. Simpan presentasi yang telah dimodifikasi.

Contoh di bawah ini membuat tabel dengan tiga kolom dan lima baris pada (100, 50) poin. Ia menerapkan batas merah dengan lebar 5 poin, menggabungkan dua sel pertama pada baris pertama, dan menyimpan hasilnya sebagai table.pptx.

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    double[] columnWidths = { 50, 50, 50 };
    double[] rowHeights = { 50, 30, 30, 30, 30 };
    ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);

    for (IRow row : table.getRows())
    {
        for (ICell cell : row)
        {
            ICellFormat cellFormat = cell.getCellFormat();
            cellFormat.getBorderTop().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderTop().setWidth(5);

            cellFormat.getBorderBottom().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderBottom().setWidth(5);

            cellFormat.getBorderLeft().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderLeft().setWidth(5);

            cellFormat.getBorderRight().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderRight().setWidth(5);
        }
    }

    table.mergeCells(table.get_Item(0, 0), table.get_Item(1, 0), false);
    table.get_Item(0, 0).getTextFrame().setText("Merged Cells");

    presentation.save("table.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Penomoran dalam Tabel Standar

Dalam tabel standar, indeks sel dimulai dari nol dan menggunakan urutan (kolom, baris). Sel pertama memiliki indeks (0, 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)

Contoh ini membuat tabel 4 × 4 yang diilustrasikan di atas, dengan lebar kolom dan tinggi baris masing-masing 70 poin serta batas sel merah dengan lebar 5 poin. Koordinat menunjukkan indeks sel; contoh ini membiarkan sel kosong dan menyimpan tabel sebagai StandardTables_out.pptx.

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    double[] columnWidths = { 70, 70, 70, 70 };
    double[] rowHeights = { 70, 70, 70, 70 };
    ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);

    for (IRow row : table.getRows())
    {
        for (ICell cell : row)
        {
            ICellFormat cellFormat = cell.getCellFormat();
            cellFormat.getBorderTop().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderTop().setWidth(5);

            cellFormat.getBorderBottom().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderBottom().setWidth(5);

            cellFormat.getBorderLeft().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderLeft().setWidth(5);

            cellFormat.getBorderRight().getFillFormat().setFillType(FillType.Solid);
            cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
            cellFormat.getBorderRight().setWidth(5);
        }
    }

    presentation.save("StandardTables_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Mengakses Tabel yang Ada

Tabel disimpan dalam koleksi bentuk slide. Iterasikan bentuk-bentuk untuk menemukan sebuah tabel, kemudian gunakan antarmuka ITable untuk membaca atau memperbarui sel-selnya.

  1. Muat presentasi menggunakan kelas Presentation .
  2. Dapatkan referensi ke slide yang berisi tabel berdasarkan indeksnya.
  3. Iterasikan objek IShape dan berhenti ketika sebuah tabel ditemukan. Jika slide berisi beberapa tabel, gunakan getAlternativeText untuk mengidentifikasi tabel yang Anda butuhkan.
  4. Perbarui teks di sel target.
  5. Simpan presentasi yang telah dimodifikasi.

Contoh di bawah ini membuka UpdateExistingTable.pptx dan menemukan tabel pertama pada slide pertama. Ia mengatur sel pada kolom 0, baris 1 menjadi New dan menyimpan hasilnya sebagai table1_out.pptx. Input harus berisi setidaknya satu slide, dan tabel pertama pada slide tersebut harus memiliki setidaknya satu kolom dan dua baris.

import com.aspose.slides.*;

Presentation presentation = new Presentation("UpdateExistingTable.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    ITable table = null;

    for (IShape shape : slide.getShapes()) {
        if (shape instanceof ITable) {
            table = (ITable) shape;
            break;
        }
    }

    if (table != null) {
        table.get_Item(0, 1).getTextFrame().setText("New");
        presentation.save("table1_out.pptx", SaveFormat.Pptx);
    }
} finally {
    presentation.dispose();
}

Untuk mengubah ukuran baris dalam tabel yang ada dan memahami mengapa tinggi sebenarnya dapat melebihi minimum yang diminta, lihat Kontrol Tinggi Baris.

Temukan Sel yang Memiliki Text Frame

Ketika kode pemrosesan teks umum menerima sebuah ITextFrame dari tabel, gunakan metode ITextFrame.getParentCell untuk mengambil ICell pemiliknya. Untuk text frame sel tabel, ITextFrame.getParentCell mengembalikan pemilik dan ITextFrame.getParentShape mengembalikan null, meskipun tabel itu sendiri adalah sebuah shape.

Koordinat sel tersedia melalui metode read-only ICell.getFirstColumnIndex dan ICell.getFirstRowIndex . ITextFrame.getParentCell juga menyediakan navigasi read-only: ia mengembalikan pemilik tetapi tidak mengubah kepemilikan. Selalu periksa apakah sel yang dikembalikan bernilai null sebelum menggunakannya.

Untuk contoh lengkap yang mengidentifikasi pemilik sel tabel dan shape, termasuk shape yang terkait dengan node SmartArt, lihat Cari dan Ganti Teks.

Menyelaraskan Teks dalam Tabel

Anda dapat mengontrol penambatan vertikal dan arah teks pada sel tabel individu. Contoh pada bagian ini memusatkan teks di dalam sel pertama dan memutar teks sebesar 270 derajat.

  1. Buat instance dari kelas Presentation .
  2. Dapatkan referensi ke slide berdasarkan indeksnya.
  3. Tambahkan objek ITable ke slide.
  4. Akses objek ITextFrame dari tabel.
  5. Akses IParagraph pertama dan atur teks serta warnanya.
  6. Atur penambatan vertikal sel dan arah teks menggunakan setTextAnchorType dan setTextVerticalType .
  7. Simpan presentasi yang telah dimodifikasi.

Contoh ini membuat tabel 4 × 4 dengan lebar kolom 120 poin dan tinggi baris 100 poin. Ia memformat teks di sel (0, 0), menambah nilai ke sel-sel lainnya di baris pertama, dan menyimpan hasilnya sebagai Vertical_Align_Text_out.pptx.

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    double[] columnWidths = { 120, 120, 120, 120 };
    double[] rowHeights = { 100, 100, 100, 100 };
    ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);

    table.get_Item(1, 0).getTextFrame().setText("10");
    table.get_Item(2, 0).getTextFrame().setText("20");
    table.get_Item(3, 0).getTextFrame().setText("30");

    ITextFrame textFrame = table.get_Item(0, 0).getTextFrame();
    IParagraph paragraph = textFrame.getParagraphs().get_Item(0);

    IPortion portion = paragraph.getPortions().get_Item(0);
    portion.setText("Text here");
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);

    ICell cell = table.get_Item(0, 0);
    cell.setTextAnchorType(TextAnchorType.Center);
    cell.setTextVerticalType(TextVerticalType.Vertical270);

    presentation.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Atur Pemformatan Teks pada Tingkat Tabel

Gunakan setTextFormat untuk menerapkan pemformatan teks ke semua sel dalam tabel. Overload‑nya menerima pemformatan bagian, paragraf, dan text frame, sehingga Anda dapat mengatur properti ini tanpa harus mengiterasi setiap sel.

  1. Muat presentasi menggunakan kelas Presentation .
  2. Dapatkan referensi ke slide berdasarkan indeksnya.
  3. Akses objek ITable dari slide.
  4. Atur ukuran font menggunakan setFontHeight untuk teks.
  5. Atur perataan paragraf dan margin kanan menggunakan setAlignment dan setMarginRight .
  6. Atur arah teks menggunakan setTextVerticalType .
  7. Simpan presentasi yang telah dimodifikasi.

Contoh di bawah ini membuka table.pptx, yang harus berisi setidaknya satu slide dengan tabel sebagai shape pertama. Ia mengatur ukuran font menjadi 25 poin, meratakan paragraf ke kanan dengan margin kanan 20 poin, dan membuat teks menjadi vertikal. Presentasi yang diformat disimpan sebagai result.pptx.

import com.aspose.slides.*;

Presentation presentation = new Presentation("table.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    ITable table = (ITable) slide.getShapes().get_Item(0);

    PortionFormat portionFormat = new PortionFormat();
    portionFormat.setFontHeight(25);
    table.setTextFormat(portionFormat);

    ParagraphFormat paragraphFormat = new ParagraphFormat();
    paragraphFormat.setAlignment(TextAlignment.Right);
    paragraphFormat.setMarginRight(20);
    table.setTextFormat(paragraphFormat);

    TextFrameFormat textFrameFormat = new TextFrameFormat();
    textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
    table.setTextFormat(textFrameFormat);

    presentation.save("result.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Dapatkan Properti Gaya Tabel

Gunakan getStylePreset untuk membaca gaya preset tabel dan setStylePreset untuk menetapkannya. Contoh ini menerapkan TableStylePreset.DarkStyle1 pada satu tabel, mencetak nilai preset, dan menetapkan preset yang sama pada tabel kedua. Kedua tabel disimpan dalam table-style.pptx.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    double[] columnWidths = { 100, 150 };
    double[] rowHeights = { 5, 5, 5 };
    ITable table = slide.getShapes().addTable(10, 10, columnWidths, rowHeights);
    table.setStylePreset(TableStylePreset.DarkStyle1);

    int stylePreset = table.getStylePreset();
    System.out.println("Table style preset: " + stylePreset);

    ITable anotherTable = slide.getShapes().addTable(10, 100, columnWidths, rowHeights);
    anotherTable.setStylePreset(stylePreset);

    presentation.save("table-style.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Kunci Rasio Aspek Tabel

Rasio aspek tabel adalah perbandingan antara lebar dan tingginya. Gunakan setAspectRatioLocked untuk mengunci rasio ini pada sebuah tabel.

Contoh di bawah ini membuka pres.pptx, yang harus berisi setidaknya satu slide dengan tabel sebagai shape pertama. Ia mencetak status kunci saat ini, mengaktifkan kunci rasio aspek, mencetak status yang diperbarui (true), dan menyimpan hasilnya sebagai pres-out.pptx.

import com.aspose.slides.*;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    ITable table = (ITable) slide.getShapes().get_Item(0);
    System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());

    table.getGraphicalObjectLock().setAspectRatioLocked(true);
    System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());

    presentation.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

FAQ

Apakah saya dapat mengaktifkan arah baca right-to-left (RTL) untuk seluruh tabel dan teks dalam selnya?

Ya. Tabel menyediakan metode setRightToLeft , dan paragraf memiliki ParagraphFormat.setRightToLeft . Menggunakan keduanya memastikan urutan RTL yang benar dan rendering yang tepat di dalam sel.

Bagaimana saya dapat mencegah pengguna memindahkan atau mengubah ukuran tabel dalam file akhir?

Gunakan kunci shape untuk menonaktifkan pemindahan, pengubahan ukuran, pemilihan, dll. Kunci ini juga berlaku pada tabel.

Apakah memasukkan gambar di dalam sel sebagai latar belakang didukung?

Ya. Anda dapat mengatur picture fill untuk sel; gambar akan menutupi area sel sesuai mode yang dipilih (stretch atau tile).