Tabellen in Präsentationen auf Android verwalten

Eine Tabelle in PowerPoint ist eine effiziente Möglichkeit, Informationen darzustellen und zu präsentieren. Die Informationen in einem Raster von Zellen (angeordnet in Zeilen und Spalten) sind übersichtlich und leicht zu verstehen.

Aspose.Slides stellt die Klasse Table, das Interface ITable, die Klasse Cell und das Interface ICell sowie weitere Typen zur Verfügung, mit denen Sie Tabellen in allen Arten von Präsentationen erstellen, aktualisieren und verwalten können.

Eine Tabelle von Grund auf erstellen

  1. Erstellen Sie eine Instanz der Klasse Presentation.
  2. Holen Sie sich eine Referenz auf die Folie über ihren Index.
  3. Definieren Sie ein Array von columnWidth.
  4. Definieren Sie ein Array von rowHeight.
  5. Fügen Sie der Folie ein ITable-Objekt über die Methode addTable hinzu.
  6. Durchlaufen Sie jedes ICell, um die Formatierung für die oberen, unteren, rechten und linken Rahmen anzuwenden.
  7. Fassen Sie die ersten beiden Zellen der ersten Tabellenzeile zusammen.
  8. Greifen Sie auf das TextFrame-Objekt eines ICell zu.
  9. Fügen Sie dem TextFrame Text hinzu.
  10. Speichern Sie die geänderte Präsentation.
// Instanziiert eine Presentation-Klasse, die eine PPTX-Datei repräsentiert
Presentation pres = new Presentation();
try {
    // Greift auf die erste Folie zu
    ISlide sld = pres.getSlides().get_Item(0);

    // Definiert Spalten mit Breiten und Zeilen mit Höhen
    double[] dblCols = {50, 50, 50};
    double[] dblRows = {50, 30, 30, 30, 30};

    // Fügt der Folie ein Tabellenshape hinzu
    ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);

    // Setzt das Rahmenformat für jede Zelle
    for (int row = 0; row < tbl.getRows().size(); row++)
    {
        for (int cell = 0; cell < tbl.getRows().get_Item(row).size(); cell++)
        {
            ICellFormat cellFormat = tbl.getRows().get_Item(row).get_Item(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);
        }
    }
    // Verbindet Zellen 1 und 2 der Zeile 1
    tbl.mergeCells(tbl.getRows().get_Item(0).get_Item(0), tbl.getRows().get_Item(1).get_Item(1), false);

    // Fügt dem zusammengeführten Feld etwas Text hinzu
    tbl.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells");

    // Speichert die Präsentation auf Disk
    pres.save("table.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Nummerierung in einer Standardtabelle

In einer Standardtabelle erfolgt die Nummerierung der Zellen einfach und nullbasiert. Die erste Zelle einer Tabelle hat den Index 0,0 (Spalte 0, Zeile 0).

Zum Beispiel werden die Zellen einer Tabelle mit 4 Spalten und 4 Zeilen wie folgt nummeriert:

(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)
// Instanziert eine Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation();
try {
    // Greift auf die erste Folie zu
    ISlide sld = pres.getSlides().get_Item(0);

    // Definiert Spalten mit Breiten und Zeilen mit Höhen
    double[] dblCols = { 70, 70, 70, 70 };
    double[] dblRows = { 70, 70, 70, 70 };

    // Fügt der Folie ein Tabellenshape hinzu
    ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);

    // Legt das Rahmenformat für jede Zelle fest
    for (IRow row : tbl.getRows())
    {
        for (ICell cell : 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);
        }
    }

    // Speichert die Präsentation auf Disk
    pres.save("StandardTables_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Zugriff auf eine vorhandene Tabelle

  1. Erstellen Sie eine Instanz der Klasse Presentation.

  2. Holen Sie sich eine Referenz auf die Folie, die die Tabelle enthält, über ihren Index.

  3. Erstellen Sie ein ITable-Objekt und setzen Sie es auf null.

  4. Durchlaufen Sie alle IShape‑Objekte, bis die Tabelle gefunden ist.
    Wenn Sie vermuten, dass die Folie, mit der Sie arbeiten, nur eine einzelne Tabelle enthält, können Sie einfach alle Formen prüfen, die sie enthält. Wird eine Form als Tabelle identifiziert, können Sie sie in ein Table-Objekt casten. Wenn die Folie jedoch mehrere Tabellen enthält, ist es besser, die gewünschte Tabelle über ihren setAlternativeText(String value) zu suchen.

  5. Verwenden Sie das ITable-Objekt, um mit der Tabelle zu arbeiten. Im folgenden Beispiel fügen wir der Tabelle eine neue Zeile hinzu.

  6. Speichern Sie die geänderte Präsentation.

// Instanziiert die Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation("UpdateExistingTable.pptx");
try {

    // Greift auf die erste Folie zu
    ISlide sld = pres.getSlides().get_Item(0);

    // Initialisiert null TableEx
    ITable tbl = null;

    // Durchläuft die Shapes und setzt eine Referenz auf die gefundene Tabelle
    for (IShape shp : sld.getShapes()) 
    {
        if (shp instanceof ITable) 
        {
            tbl = (ITable) shp;
            // Setzt den Text für die erste Spalte der zweiten Zeile
            tbl.get_Item(0, 1).getTextFrame().setText("New");
        }
    }
    
    // Speichert die geänderte Präsentation auf die Festplatte
    pres.save("table1_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Text in einer Tabelle ausrichten

  1. Erstellen Sie eine Instanz der Klasse Presentation.
  2. Holen Sie sich eine Referenz auf die Folie über ihren Index.
  3. Fügen Sie der Folie ein ITable-Objekt hinzu.
  4. Greifen Sie von der Tabelle aus auf ein ITextFrame-Objekt zu.
  5. Greifen Sie auf das IParagraph-Objekt des ITextFrame zu.
  6. Richten Sie den Text vertikal aus.
  7. Speichern Sie die geänderte Präsentation.
// Erstellt eine Instanz der Presentation-Klasse
Presentation pres = new Presentation();
try {
    // Ruft die erste Folie ab
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Definiert Spalten mit Breiten und Zeilen mit Höhen
    double[] dblCols = { 120, 120, 120, 120 };
    double[] dblRows = { 100, 100, 100, 100 };
    
    // Fügt das Tabellenshape zur Folie hinzu
    ITable tbl = slide.getShapes().addTable(100, 50, dblCols, dblRows);
    tbl.get_Item(1, 0).getTextFrame().setText("10");
    tbl.get_Item(2, 0).getTextFrame().setText("20");
    tbl.get_Item(3, 0).getTextFrame().setText("30");
    
    // Greift auf den Textframe zu
    ITextFrame txtFrame = tbl.get_Item(0, 0).getTextFrame();
    
    // Erstellt das Paragraph-Objekt für den Textframe
    IParagraph paragraph = txtFrame.getParagraphs().get_Item(0);
    
    // Erstellt das Portion-Objekt für den Absatz
    IPortion portion = paragraph.getPortions().get_Item(0);
    portion.setText("Text here");
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    
    // Richtet den Text vertikal aus
    ICell cell = tbl.get_Item(0, 0);
    cell.setTextAnchorType(TextAnchorType.Center);
    cell.setTextVerticalType(TextVerticalType.Vertical270);
    
    // Speichert die Präsentation auf der Festplatte
    pres.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Textformatierung auf Tabellenebene festlegen

  1. Erstellen Sie eine Instanz der Presentation-Klasse.
  2. Holen Sie sich eine Referenz auf die Folie über ihren Index.
  3. Greifen Sie von der Folie auf ein ITable-Objekt zu.
  4. Setzen Sie die setFontHeight(float value)‑Methode für den Text.
  5. Setzen Sie setAlignment(int value) und setMarginRight(float value).
  6. Setzen Sie setTextVerticalType(byte value).
  7. Speichern Sie die geänderte Präsentation.
// Erstellt eine Instanz der Presentation-Klasse
Presentation pres = new Presentation("simpletable.pptx");
try {
    // Angenommen, die erste Form auf der ersten Folie ist eine Tabelle
    ITable someTable = (ITable) pres.getSlides().get_Item(0).getShapes().get_Item(0);
    
    // Legt die Schriftgröße der Tabellenzellen fest
    PortionFormat portionFormat = new PortionFormat();
    portionFormat.setFontHeight(25);
    someTable.setTextFormat(portionFormat);
    
    // Setzt die Textausrichtung und den rechten Rand der Tabellenzellen in einem Aufruf
    ParagraphFormat paragraphFormat = new ParagraphFormat();
    paragraphFormat.setAlignment(TextAlignment.Right);
    paragraphFormat.setMarginRight(20);
    someTable.setTextFormat(paragraphFormat);
    
    // Legt den vertikalen Texttyp der Tabellenzellen fest
    TextFrameFormat textFrameFormat = new TextFrameFormat();
    textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
    someTable.setTextFormat(textFrameFormat);
    
    pres.save("result.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Tabellenstil‑Eigenschaften abrufen

Aspose.Slides ermöglicht das Abrufen der Stil‑Eigenschaften einer Tabelle, sodass Sie diese Details für eine andere Tabelle oder an anderer Stelle verwenden können. ```java Presentation pres = new Presentation(); try { ITable table = pres.getSlides().get_Item(0).getShapes().addTable(10, 10, new double[] { 100, 150 }, new double[] { 5, 5, 5 }); table.setStylePreset(TableStylePreset.DarkStyle1); // ändert das Standard-Stilpreset pres.save(“table.pptx”, SaveFormat.Pptx); } finally { if (pres != null) pres.dispose(); }



## **Seitenverhältnis einer Tabelle sperren**

Das Seitenverhältnis einer geometrischen Form ist das Verhältnis ihrer Maße in verschiedenen Dimensionen. Aspose.Slides stellt die Eigenschaft [**setAspectRatioLocked**](https://reference.aspose.com/slides/androidjava/com.aspose.slides/GraphicalObjectLock#setAspectRatioLocked-boolean-) zur Verfügung, um das Seitenverhältnis für Tabellen und andere Formen zu sperren.

```java
Presentation pres = new Presentation("pres.pptx");
try {
    ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0);
    System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());

    table.getGraphicalObjectLock().setAspectRatioLocked(!table.getGraphicalObjectLock().getAspectRatioLocked()); // invertieren

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

    pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Kann ich die Rechts‑nach‑Links‑Lese­richtung (RTL) für eine gesamte Tabelle und den Text in deren Zellen aktivieren?

Ja. Die Tabelle stellt die Methode setRightToLeft bereit, und Absätze haben ParagraphFormat.setRightToLeft. Durch die Verwendung beider wird die korrekte RTL‑Reihenfolge und -Darstellung in den Zellen gewährleistet.

Wie kann ich verhindern, dass Benutzer eine Tabelle in der endgültigen Datei verschieben oder die Größe ändern?

Verwenden Sie Form‑Sperren, um das Verschieben, Ändern der Größe, die Auswahl usw. zu deaktivieren. Diese Sperren gelten ebenfalls für Tabellen.

Wird das Einfügen eines Bildes als Hintergrund in einer Zelle unterstützt?

Ja. Sie können für eine Zelle eine picture fill festlegen; das Bild bedeckt die Zellenfläche je nach gewähltem Modus (Dehnen oder Kacheln).