Kaip dirbti su lentelėmis Java kalboje
Aspose.Slides FOSS for Java palaiko lentelių kūrimą skaidrėse su konfigūruojamu stulpelių pločiu ir eilučių aukščiu. Šiame vadove parodyta, kaip pridėti lentelę, užpildyti ją duomenimis ir taikyti pagrindinį teksto formatavimą langeliams.
Žingsnis po žingsnio vadovas
1 žingsnis: Pridėkite Maven priklausomybę
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Žingsnis 2: Sukurti arba atverti pristatymą
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ICell;
import org.aspose.slides.foss.IParagraphCollection;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// ... add table ...
prs.save("table.pptx", SaveFormat.PPTX);
}3 žingsnis: Nustatyti stulpelių pločius ir eilučių aukščius
Lentelės reikalauja aiškių stulpelių pločių ir eilučių aukščių taškeliais (1 taškas = 1/72 colio). Standartinė skaidrė yra 720 taškų pločio ir 540 taškų aukščio.
double[] colWidths = {200.0, 150.0, 150.0}; // 3 columns
double[] rowHeights = {45.0, 40.0, 40.0}; // 3 rowsŽingsnis 4: Pridėti lentelę
slide.getShapes().addTable(x, y, colWidths, rowHeights) sukuria lentelę pozicijoje (x, y):
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ICell;
import org.aspose.slides.foss.IParagraphCollection;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
double[] colWidths = {200.0, 150.0, 150.0};
double[] rowHeights = {45.0, 40.0, 40.0};
ITable table = slide.getShapes().addTable(50, 100, colWidths, rowHeights);
prs.save("table.pptx", SaveFormat.PPTX);
}5 žingsnis: Nustatyti langelio tekstą
Pasiekite langelius per table.getRows().get(rowIndex).get(colIndex) ir priskirkite tekstą per .getTextFrame().setText():
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ICell;
import org.aspose.slides.foss.IParagraphCollection;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
double[] colWidths = {200.0, 150.0, 150.0};
double[] rowHeights = {45.0, 40.0, 40.0};
ITable table = slide.getShapes().addTable(50, 100, colWidths, rowHeights);
// Header row (row 0)
String[] headers = {"Product", "Units Sold", "Revenue"};
for (int col = 0; col < headers.length; col++) {
table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
}
// Data rows
String[][] data = {
{"Widget A", "1,200", "$24,000"},
{"Widget B", "850", "$17,000"},
};
for (int row = 0; row < data.length; row++) {
for (int col = 0; col < data[row].length; col++) {
table.getRows().get(row + 1).get(col)
.getTextFrame().setText(data[row][col]);
}
}
prs.save("sales-table.pptx", SaveFormat.PPTX);
}Žingsnis 6: Formatuoti antraštės langelio tekstą
Taikykite pusjuodą formatavimą antraštės langeliams naudodami PortionFormat:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ICell;
import org.aspose.slides.foss.IParagraphCollection;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
for (int col = 0; col < headers.length; col++) {
ICell cell = table.getRows().get(0).get(col);
IParagraphCollection paragraphs = cell.getTextFrame().getParagraphs();
if (paragraphs.size() > 0 && paragraphs.get(0).getPortions().size() > 0) {
IPortionFormat fmt = paragraphs.get(0).getPortions().get(0)
.getPortionFormat();
fmt.setFontBold(NullableBool.TRUE);
fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 255, 255, 255)
);
}
}Pilnas veikiantis pavyzdys
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ICell;
import org.aspose.slides.foss.IParagraphCollection;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
public class CreateTable {
public static void main(String[] args) {
String[][] dataRows = {
{"North", "$1.2M", "+8%"},
{"South", "$0.9M", "+4%"},
{"East", "$1.5M", "+12%"},
{"West", "$0.7M", "+2%"},
};
String[] headers = {"Region", "Revenue", "Growth"};
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
double[] colWidths = {180.0, 140.0, 120.0};
double[] rowHeights = new double[dataRows.length + 1];
rowHeights[0] = 45.0;
for (int i = 1; i < rowHeights.length; i++) {
rowHeights[i] = 38.0;
}
ITable table = slide.getShapes().addTable(
60, 80, colWidths, rowHeights
);
// Header row
for (int col = 0; col < headers.length; col++) {
ICell cell = table.getRows().get(0).get(col);
cell.getTextFrame().setText(headers[col]);
if (cell.getTextFrame().getParagraphs().size() > 0
&& cell.getTextFrame().getParagraphs().get(0)
.getPortions().size() > 0) {
cell.getTextFrame().getParagraphs().get(0)
.getPortions().get(0).getPortionFormat()
.setFontBold(NullableBool.TRUE);
}
}
// Data rows
for (int row = 0; row < dataRows.length; row++) {
for (int col = 0; col < dataRows[row].length; col++) {
table.getRows().get(row + 1).get(col)
.getTextFrame().setText(dataRows[row][col]);
}
}
prs.save("regional-revenue.pptx", SaveFormat.PPTX);
}
System.out.println("Saved regional-revenue.pptx");
}
}Dažnos problemos ir sprendimai
IndexOutOfBoundsException kai pasiekiama table.getRows().get(row).get(col)
Eilučių ir stulpelių indeksai yra nulio pagrindu. Jei apibrėžėte rowHeights su 3 elementais, galimi eilučių indeksai yra 0, 1, 2.
Ląstelės tekstas neatsiranda išsaugotame faile
Visada priskirkite per .getTextFrame().setText(value). Pasiekite langelius kaip table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Lentelės pozicija yra už skaidrės ribų
Patikrinkite, ar x + sum(colWidths) <= 720 ir y + sum(rowHeights) <= 540 yra standartinei skaidrei.
Dažniausiai užduodami klausimai
Ar galiu sujungti lentelės langelius?
Ląelių sujungimas (mergeCells) yra deklaruotas API, tačiau šioje leidimo versijoje sukelia UnsupportedOperationException.
Ar galiu pritaikyti lentelės viso pločio fono spalvą?
Taikykite užpildymo formatavimą kiekvienam atskiram langeliui:
for (int row = 0; row < table.getRows().size(); row++) {
for (int col = 0; col < table.getColumns().size(); col++) {
ICell cell = table.getRows().get(row).get(col);
cell.getFillFormat().setFillType(FillType.SOLID);
cell.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 240, 248, 255)
);
}
}Ar galiu nustatyti lentelės stiliaus išankstinį nustatymą?
Taip. Naudokite table.setStylePreset(TableStylePreset.MEDIUM_STYLE_2_ACCENT_1), kad pritaikytumėte įmontuotą lentelės stilių.