Prezentációs táblázatok kezelése Java nyelven

Bevezetés

A táblázatok a PowerPointban információkat sorokba és oszlopokba szerveznek, megkönnyítve az értékek olvasását és összehasonlítását.

Az Aspose.Slides biztosítja a Table osztályt, az ITable interfészt, a Cell osztályt, az ICell interfészt és egyéb típusokat, hogy táblázatokat hozhasson létre, frissíthessen és kezelhessen a prezentációkban.

Táblázat létrehozása a semmiből

Hozzon létre egy táblázatot a pozíció, az oszlopszélességek és a sormagasságok megadásával. A diára történő hozzáadás után formázhatja a cellaszegélyeket, egyesítheti a cellákat, és szöveget vihet be.

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze be a diát az indexe alapján.
  3. Határozzon meg egy pontokban megadott oszlopszélességek tömbjét.
  4. Határozzon meg egy pontokban megadott sormagasságok tömbjét.
  5. Adjon hozzá egy ITable objektumot a diához a addTable metódus segítségével.
  6. Iteráljon végig minden ICell elemen a felső, alsó, jobb és bal szegély formázásához.
  7. Egyesítse a táblázat első sorának első két celláját.
  8. Érje el az egyesített cellát a getTextFrame metódusával.
  9. Állítsa be a szöveget az egyesített cellában.
  10. Mentse a módosított prezentációt.

A lenti példa egy három oszlopos és öt soros táblázatot hoz létre (100, 50) pont helyen. Piros szegélyeket alkalmaz 5 pont szélességgel, egyesíti az első sor első két celláját, és a végeredményt table.pptx néven menti.

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();
}

Számozás egy szabványos táblázatban

Egy szabványos táblázatban a cella indexek nullaalapúak, és (oszlop, sor) sorrendet követnek. Az első cella indexe (0, 0).

Például egy 4 oszlopos és 4 soros táblázat cellái így vannak számozva:

(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)

Ez a példa a fent ábrázolt 4 × 4-es táblázatot hozza létre, 70 pont széles oszlopszélességekkel és sormagasságokkal, valamint 5 pont széles piros cellaszegélyekkel. A koordináták a cella indexeket mutatják; a példa üresen hagyja a cellákat, és a táblázatot StandardTables_out.pptx néven menti.

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();
}

Meglévő táblázat elérése

A táblázatok a dia alakzatgyűjteményében tárolódnak. Iteráljon az alakzatokon, hogy megtalálja a táblázatot, majd használja az ITable interfészt a cellák olvasásához vagy frissítéséhez.

  1. Töltse be a prezentációt a Presentation osztály segítségével.
  2. Szerezze meg a táblázatot tartalmazó dia referenciáját az indexe alapján.
  3. Iteráljon a IShape objektumokon, és álljon meg, amikor táblázatot talál. Ha a dián több táblázat is van, használja a getAlternativeText metódust a szükséges azonosításához.
  4. Frissítse a célcella szövegét.
  5. Mentse a módosított prezentációt.

A lenti példa megnyitja a UpdateExistingTable.pptx fájlt, és megtalálja az első táblázatot az első dián. A 0. oszlop, 1. sor celláját New értékre állítja, és az eredményt table1_out.pptx néven menti. A bemeneti fájlnak legalább egy diát kell tartalmaznia, és az első táblázatnak legalább egy oszlopot és két sort.

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();
}

Ha egy meglévő táblázat sorát szeretné átméretezni, és meg akarja érteni, miért lehet a tényleges magasság nagyobb a kért minimumnál, lásd a Sor magasságának szabályozása oldalt.

Keresse meg a szövegtáblát tartalmazó cellát

Amikor egy általános szövegfeldolgozó kód egy ITextFrame objektumot kap egy táblázatból, használja az ITextFrame.getParentCell metódust a tulajdonos ICell lekéréséhez. Egy táblázat‑cella szövegtáblánál az ITextFrame.getParentCell visszaadja a tulajdonost, míg az ITextFrame.getParentShape null‑t ad, annak ellenére, hogy maga a táblázat is egy alakzat.

A cellakoordináták a csak‑olvasásra szóló ICell.getFirstColumnIndex és ICell.getFirstRowIndex metódusokkal érhetők el. Az ITextFrame.getParentCell szintén csak‑olvasási navigációt biztosít: visszaadja a tulajdonost, de nem módosítja a tulajdonjogot. Mindig ellenőrizze, hogy a visszakapott cella null‑e, mielőtt felhasználná.

A teljes példáért, amely azonosítja a táblázat‑cella és alakzat tulajdonosait, beleértve a SmartArt csomópontokhoz kapcsolódó alakzatokat, lásd a Keresés és csere szöveg oldalt.

Szöveg igazítása egy táblázatban

Egyes táblázatcella függőleges rögzítését és szövegirányát vezérelheti. E szakaszban szereplő példa a szöveget a első cellában középre igazítja, és 270 fokkal elforgatja.

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze meg a dia referencia értékét az index alapján.
  3. Adjon hozzá egy ITable objektumot a diához.
  4. Érje el a táblázatból egy ITextFrame objektumot.
  5. Érje el az első IParagraph objektumot, és állítsa be a szövegét és színét.
  6. Állítsa be a cella függőleges rögzítését és a szövegirányt a setTextAnchorType és a setTextVerticalType segítségével.
  7. Mentse a módosított prezentációt.

Ez a példa egy 4 × 4-es táblázatot hoz létre, 120 pont széles oszlopszélességekkel és 100 pont magas sorokkal. Formázza a (0, 0) cella szövegét, értékeket ad a első sor többi cellájához, és a végeredményt Vertical_Align_Text_out.pptx néven menti.

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();
}

Szövegformázás beállítása táblázati szinten

A setTextFormat használatával szövegformázást alkalmazhat a táblázat minden cellájára. A túlterhelései részek, bekezdés és szövegtáblázat formázását fogadják, így ezek a tulajdonságok egyenkénti cellák iterálása nélkül állíthatók be.

  1. Töltse be a prezentációt a Presentation osztály segítségével.
  2. Szerezze meg a dia referencia értékét az index alapján.
  3. Érje el a dián egy ITable objektumot.
  4. Állítsa be a betűméretet a setFontHeight metódussal a szöveghez.
  5. Állítsa be a bekezdés igazítását és a jobb margót a setAlignment és a setMarginRight segítségével.
  6. Állítsa be a szöveg irányát a setTextVerticalType metódussal.
  7. Mentse a módosított prezentációt.

A lenti példa megnyitja a table.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, ahol a táblázat az első alakzat. A betűméretet 25 pontra állítja, a bekezdéseket jobbra igazítja 20 pont jobb margóval, és függőlegessé teszi a szöveget. A formázott prezentáció result.pptx néven kerül mentésre.

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();
}

Táblázat stílus tulajdonságainak lekérése

Használja a getStylePreset metódust egy táblázat előre beállított stílusának lekéréséhez, és a setStylePreset metódust annak beállításához. Ez a példa egy táblázatra alkalmazza a TableStylePreset.DarkStyle1 stílust, kiírja az előre beállított értéket, majd ugyanazt a stílust a második táblázatra is beállítja. Mindkét táblázat a table-style.pptx fájlban kerül mentésre.

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();
}

Táblázat képarányának zárolása

Egy táblázat képaránya a szélesség és a magasság aránya. A setAspectRatioLocked használatával zárolhatja ezt az arányt a táblázat számára.

A lenti példa megnyitja a pres.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, ahol a táblázat az első alakzat. Kiírja a jelenlegi zárási állapotot, engedélyezi a képarány zárolását, kiírja a frissített állapotot (true), majd a végeredményt pres-out.pptx néven menti.

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();
}

GYIK

Engedélyezhetem a jobbról balra (RTL) olvasási irányt egy teljes táblázatra és a celláiban lévő szövegre?

Igen. A táblázat a setRightToLeft metódust biztosítja, a bekezdéseknek pedig a ParagraphFormat.setRightToLeft metódusa van. Mindkettő használata biztosítja a helyes RTL sorrendet és megjelenítést a cellákon belül.

Hogyan akadályozhatom meg, hogy a felhasználók a kész fájlban mozgatni vagy átméretezni a táblázatot?

Használja a alakzat zárolások funkciót a mozgatás, átméretezés, kiválasztás stb. letiltásához. Ezek a zárolások a táblázatokra is érvényesek.

Támogatott-e egy kép beillesztése egy cellába háttérként?

Igen. Egy cellához beállíthat egy picture fill kitöltést; a kép a kiválasztott mód (nyújtás vagy csempézés) szerint lefedi a cellaterületet.