使用 Python 在 PowerPoint 表格中管理行和列

简介

为了让您在 PowerPoint 演示文稿中管理表格的行和列,Aspose.Slides 提供了 Table 类以及许多其他类型。

将第一行设置为标题行

  1. 创建 Presentation 类的实例并加载演示文稿。
  2. 按索引获取幻灯片的引用。
  3. 创建一个 Table 引用并将其设为 None
  4. 遍历所有 Shape 对象以查找相关表格。
  5. 将表格的第一行设为标题行。

这段 Python 代码展示了如何将表格的第一行设置为标题行:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, Table

presentation = Presentation("table.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    table = None
    for shape in slide.getShapes():
        if isinstance(shape, Table):
            table = shape
            table.setFirstRow(True)
    presentation.save("presentation.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

克隆表格的行或列

  1. 创建 Presentation 类的实例并加载演示文稿。
  2. 按索引获取幻灯片的引用。
  3. 定义列宽列表。
  4. 定义行高列表。
  5. 通过 addTable 方法将 Table 对象添加到幻灯片中。
  6. 克隆表格行。
  7. 克隆表格列。
  8. 保存修改后的演示文稿。

这段 Python 代码展示了如何克隆 PowerPoint 表格的行或列:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("Test.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    column_widths = [50, 50, 50]
    row_heights = [50, 30, 30, 30, 30]
    table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
    table.get_Item(0, 0).getTextFrame().setText("Row 1 Cell 1")
    table.get_Item(1, 0).getTextFrame().setText("Row 1 Cell 2")
    table.getRows().addClone(table.getRows().get_Item(0), False)
    table.get_Item(0, 1).getTextFrame().setText("Row 2 Cell 1")
    table.get_Item(1, 1).getTextFrame().setText("Row 2 Cell 2")
    table.getRows().insertClone(3, table.getRows().get_Item(1), False)
    table.getColumns().addClone(table.getColumns().get_Item(0), False)
    table.getColumns().insertClone(3, table.getColumns().get_Item(1), False)
    presentation.save("table_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

从表格中删除行或列

  1. 创建 Presentation 类的实例。
  2. 按索引获取幻灯片的引用。
  3. 定义列宽列表。
  4. 定义行高列表。
  5. 通过 addTable 方法将 Table 对象添加到幻灯片中。
  6. 删除表格行。
  7. 删除表格列。
  8. 保存修改后的演示文稿。

这段 Python 代码展示了如何从表格中删除行或列:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    column_widths = [100, 50, 30]
    row_heights = [30, 50, 30]
    table = slide.getShapes().addTable(100, 100, column_widths, row_heights)
    table.getRows().removeAt(1, False)
    table.getColumns().removeAt(1, False)
    presentation.save("TestTable_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

在表格行级别设置文本格式

  1. 创建 Presentation 类的实例并加载演示文稿。
  2. 按索引获取幻灯片的引用。
  3. 从幻灯片中访问相关的 Table 对象。
  4. 使用 setFontHeight 设置第一行单元格的字体高度。
  5. 使用 setAlignmentsetMarginRight 设置第一行单元格的文本对齐方式和右侧边距。
  6. 使用 setTextVerticalType 设置第二行单元格的垂直文本类型。
  7. 保存修改后的演示文稿。

这段 Python 代码演示了该操作。

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, Table, PortionFormat, ParagraphFormat, TextFrameFormat, TextAlignment, TextVerticalType

presentation = Presentation("table.pptx")
try:
    shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    if isinstance(shape, Table):
        table = shape
        portion_format = PortionFormat()
        portion_format.setFontHeight(25)
        table.getRows().get_Item(0).setTextFormat(portion_format)
        paragraph_format = ParagraphFormat()
        paragraph_format.setAlignment(TextAlignment.Right)
        paragraph_format.setMarginRight(20)
        table.getRows().get_Item(0).setTextFormat(paragraph_format)
        text_frame_format = TextFrameFormat()
        text_frame_format.setTextVerticalType(TextVerticalType.Vertical)
        table.getRows().get_Item(1).setTextFormat(text_frame_format)
        presentation.save("result.pptx", SaveFormat.Pptx)
    else:
        print("The first shape is not a table.")
finally:
    presentation.dispose()

在表格列级别设置文本格式

  1. 创建 Presentation 类的实例并加载演示文稿。
  2. 按索引获取幻灯片的引用。
  3. 从幻灯片中访问相关的 Table 对象。
  4. 使用 setFontHeight 设置第一列单元格的字体高度。
  5. 使用 setAlignmentsetMarginRight 设置第一列单元格的文本对齐方式和右侧边距。
  6. 使用 setTextVerticalType 设置第二列单元格的垂直文本类型。
  7. 保存修改后的演示文稿。

这段 Python 代码演示了该操作:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, Table, PortionFormat, ParagraphFormat, TextFrameFormat, TextAlignment, TextVerticalType

presentation = Presentation("table.pptx")
try:
    shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    if isinstance(shape, Table):
        table = shape
        portion_format = PortionFormat()
        portion_format.setFontHeight(25)
        table.getColumns().get_Item(0).setTextFormat(portion_format)
        paragraph_format = ParagraphFormat()
        paragraph_format.setAlignment(TextAlignment.Right)
        paragraph_format.setMarginRight(20)
        table.getColumns().get_Item(0).setTextFormat(paragraph_format)
        text_frame_format = TextFrameFormat()
        text_frame_format.setTextVerticalType(TextVerticalType.Vertical)
        table.getColumns().get_Item(1).setTextFormat(text_frame_format)
        presentation.save("result.pptx", SaveFormat.Pptx)
    else:
        print("The first shape is not a table.")
finally:
    presentation.dispose()

获取表格样式属性

Aspose.Slides 允许您检索表格的样式属性,以便将这些细节用于其他表格或其他位置。这段 Python 代码展示了如何从表格预设样式中获取样式属性:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, TableStylePreset

presentation = Presentation()
try:
    column_widths = [100, 150]
    row_heights = [5, 5, 5]
    table = presentation.getSlides().get_Item(0).getShapes().addTable(10, 10, column_widths, row_heights)
    table.setStylePreset(TableStylePreset.DarkStyle1)
    style_preset = table.getStylePreset()
    print(style_preset)
    presentation.save("table.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

常见问题

我可以将 PowerPoint 主题/样式应用于已创建的表格吗?

是的。表格会继承幻灯片/布局/母版的主题,您仍然可以在此基础上覆盖填充、边框和文字颜色。

我可以像在 Excel 中那样对表格行进行排序吗?

不能,Aspose.Slides 表格没有内置的排序或筛选功能。请先在内存中对数据进行排序,然后按该顺序重新填充表格行。

我可以在使用分带(条纹)列的同时,保持特定单元格的自定义颜色吗?

可以。打开分带列后,可以对特定单元格进行本地格式设置;单元格级别的格式会覆盖表格样式。