Hantera tabeller i presentationer på Android
Introduktion
En tabell i PowerPoint är ett effektivt sätt att visa och skildra information. Informationen i ett rutnät av celler (ordnade i rader och kolumner) är enkel och lätt att förstå.
Aspose.Slides tillhandahåller klassen Table, gränssnittet ITable, klassen Cell , gränssnittet ICell och andra typer för att låta dig skapa, uppdatera och hantera tabeller i alla typer av presentationer.
Skapa en tabell från grunden
- Skapa en instans av klassen Presentation.
- Hämta en bilds referens via dess index.
- Definiera en array av
columnWidth. - Definiera en array av
rowHeight. - Lägg till ett ITable-objekt på bilden genom metoden addTable.
- Iterera genom varje ICell för att tillämpa formatering på de övre, nedre, högra och vänstra kantlinjerna.
- Slå ihop de två första cellerna i tabellens första rad.
- Åtkomst till en ICell’s TextFrame.
- Lägg till lite text i TextFrame.
- Spara den modifierade presentationen.
Denna Java‑kod visar hur du skapar en tabell i en presentation:
import com.aspose.slides.*;
import java.awt.Color;
// Skapar en Presentation-klass som representerar en PPTX-fil
Presentation pres = new Presentation();
try {
// Hämtar den första bilden
ISlide sld = pres.getSlides().get_Item(0);
// Definierar kolumner med bredd och rader med höjd
double[] dblCols = {50, 50, 50};
double[] dblRows = {50, 30, 30, 30, 30};
// Lägger till en tabellform på bilden
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Ställer in kantformatet för varje cell
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);
}
}
// Slår samman cellerna 1 och 2 i rad 1
tbl.mergeCells(tbl.getRows().get_Item(0).get_Item(0), tbl.getRows().get_Item(0).get_Item(1), false);
// Lägger till text i den sammanslagna cellen
tbl.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells");
// Sparar presentationen till disk
pres.save("table.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Numrering i en standardtabell
I en standardtabell är numreringen av celler enkel och nollbaserad. Den första cellen i en tabell har index 0,0 (kolumn 0, rad 0).
Till exempel numreras cellerna i en tabell med 4 kolumner och 4 rader på följande sätt:
| (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) |
Denna Java‑kod visar hur du specificerar numreringen för celler i en tabell:
import com.aspose.slides.*;
import java.awt.Color;
// Skapar en Presentation-klass som representerar en PPTX-fil
Presentation pres = new Presentation();
try {
// Hämtar den första bilden
ISlide sld = pres.getSlides().get_Item(0);
// Definierar kolumner med bredd och rader med höjd
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Lägger till en tabellform på bilden
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Ställer in kantformatet för varje cell
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);
}
}
// Sparar presentationen till disk
pres.save("StandardTables_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Åtkomst till en befintlig tabell
-
Skapa en instans av klassen Presentation.
-
Hämta en referens till bilden som innehåller tabellen via dess index.
-
Skapa ett ITable-objekt och sätt det till null.
-
Iterera genom alla IShape-objekt tills tabellen hittas.
Om du misstänker att bilden du arbetar med innehåller en enda tabell kan du helt enkelt kontrollera alla former den innehåller. När en form identifieras som en tabell kan du typkonvertera den till ett Table-objekt. Men om bilden du arbetar med innehåller flera tabeller är det bättre att söka efter den tabell du behöver via dess setAlternativeText(String value).
-
Använd ITable-objektet för att arbeta med tabellen. I exemplet nedan sätter vi texten i en cell i tabellen.
-
Spara den modifierade presentationen.
Denna Java‑kod visar hur du får åtkomst till och arbetar med en befintlig tabell:
import com.aspose.slides.*;
// Skapar en Presentation-klass som representerar en PPTX-fil
Presentation pres = new Presentation("UpdateExistingTable.pptx");
try {
// Hämtar den första bilden
ISlide sld = pres.getSlides().get_Item(0);
// Initierar null TableEx
ITable tbl = null;
// Itererar genom formerna och sätter en referens till den funna tabellen
for (IShape shp : sld.getShapes())
{
if (shp instanceof ITable)
{
tbl = (ITable) shp;
// Sätter texten för den första kolumnen i den andra raden
tbl.get_Item(0, 1).getTextFrame().setText("New");
}
}
// Sparar den modifierade presentationen till disk
pres.save("table1_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Hitta den cell som äger en textram
När generisk textbearbetningskod får ett ITextFrame från en tabell, använd metoden ITextFrame.getParentCell för att hämta den ägande ICell. För en tabellcell‑textram returnerar ITextFrame.getParentCell ägaren och ITextFrame.getParentShape returnerar null, även om tabellen själv är en form.
Cellkoordinaterna finns tillgängliga via de skrivskyddade metoderna ICell.getFirstColumnIndex och ICell.getFirstRowIndex. ITextFrame.getParentCell ger också skrivskyddad navigering: den returnerar ägaren men ändrar inte ägarskapet. Kontrollera alltid om den returnerade cellen är null innan du använder den.
För ett komplett exempel som identifierar tabellcell‑ och formägare, inklusive former kopplade till SmartArt‑noder, se Search and Replace Text.
Justera text i en tabell
- Skapa en instans av klassen Presentation.
- Hämta en bilds referens via dess index.
- Lägg till ett ITable-objekt på bilden.
- Åtkomst till ett ITextFrame-objekt från tabellen.
- Åtkomst till ITextFrame-objektets IParagraph.
- Justera texten vertikalt.
- Spara den modifierade presentationen.
Denna Java‑kod visar hur du justerar texten i en tabell:
import com.aspose.slides.*;
import java.awt.Color;
// Skapar en instans av Presentation-klassen
Presentation pres = new Presentation();
try {
// Hämtar den första bilden
ISlide slide = pres.getSlides().get_Item(0);
// Definierar kolumner med bredd och rader med höjd
double[] dblCols = { 120, 120, 120, 120 };
double[] dblRows = { 100, 100, 100, 100 };
// Lägger till tabellformen på bilden
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");
// Hämtar textrammet
ITextFrame txtFrame = tbl.get_Item(0, 0).getTextFrame();
// Skapar Paragraph-objektet för textrammet
IParagraph paragraph = txtFrame.getParagraphs().get_Item(0);
// Skapar Portion-objektet för stycket
IPortion portion = paragraph.getPortions().get_Item(0);
portion.setText("Text here");
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
// Justera texten vertikalt
ICell cell = tbl.get_Item(0, 0);
cell.setTextAnchorType(TextAnchorType.Center);
cell.setTextVerticalType(TextVerticalType.Vertical270);
// Sparar presentationen till disk
pres.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ställ in textformatering på tabellnivå
- Skapa en instans av klassen Presentation.
- Hämta en bilds referens via dess index.
- Åtkomst till ett ITable-objekt från bilden.
- Använd setFontHeight(float value) för att ange teckenhöjd.
- Använd setAlignment(int value) och setMarginRight(float value).
- Använd setTextVerticalType(byte value).
- Spara den modifierade presentationen.
Denna Java‑kod visar hur du applicerar dina föredragna formateringsalternativ på texten i en tabell:
import com.aspose.slides.*;
// Skapar en instans av Presentation-klassen
Presentation pres = new Presentation("simpletable.pptx");
try {
// Anta att den första formen på den första bilden är en tabell
ITable someTable = (ITable) pres.getSlides().get_Item(0).getShapes().get_Item(0);
// Ställer in teckenhöjden för tabellcellerna
PortionFormat portionFormat = new PortionFormat();
portionFormat.setFontHeight(25);
someTable.setTextFormat(portionFormat);
// Ställer in tabellcellernas textjustering och högermarginal i ett anrop
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.setAlignment(TextAlignment.Right);
paragraphFormat.setMarginRight(20);
someTable.setTextFormat(paragraphFormat);
// Ställer in den vertikala texttypen för tabellcellerna
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
someTable.setTextFormat(textFrameFormat);
pres.save("result.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Hämta tabellens stilegenskaper
Aspose.Slides låter dig hämta stilegenskaper för en tabell så att du kan använda dessa detaljer för en annan tabell eller på någon annan plats. Denna Java‑kod visar hur du får stilegenskaperna från ett förinställt tabelltema:
import com.aspose.slides.*;
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); // ändra standardstilförinställningens tema
// Hämta stilförinställningen för tabellen
int stylePreset = table.getStylePreset();
System.out.println("Table style preset: " + stylePreset);
// Applicera den hämtade stilförinställningen på en annan tabell
ITable anotherTable = pres.getSlides().get_Item(0).getShapes().addTable(10, 100, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
anotherTable.setStylePreset(stylePreset);
pres.save("table.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Lås bildförhållandet för en tabell
Bildförhållandet för en geometrisk form är förhållandet mellan dess storlekar i olika dimensioner. Aspose.Slides tillhandahåller egenskapen setAspectRatioLocked för att låsa bildförhållandet för tabeller och andra former.
Denna Java‑kod visar hur du låser bildförhållandet för en tabell:
import com.aspose.slides.*;
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()); // invertera
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Kan jag aktivera läsning från höger till vänster (RTL) för en hel tabell och texten i dess celler?
Ja. Tabellen exponerar metoden setRightToLeft, och stycken har ParagraphFormat.setRightToLeft. Genom att använda båda säkerställs korrekt RTL‑ordning och rendering i cellerna.
Hur kan jag förhindra att användare flyttar eller ändrar storlek på en tabell i den slutliga filen?
Använd lås på former för att inaktivera flytt, storleksändring, markering osv. Dessa lås gäller även för tabeller.
Stöds det att infoga en bild i en cell som bakgrund?
Ja. Du kan ange ett picture fill för en cell; bilden täcker cellområdet enligt valt läge (stretch eller tile).