我正在尝试在有表格的 PPT 幻灯片中填充一些值。 这些值位于列表中,并希望将它们显示为项目符号点。 我正在使用 python-pptx 模块进行编码。 我怎样才能做到这一点?
我尝试了下面的代码,该代码从具有表格占位符的现有布局创建幻灯片。
# Insert and populate the Table in the slide.
def populate_table():
table_ph = slide.placeholders[12]
graphic_frame = table_ph.insert_table(rows = 2, cols = 3)
table = graphic_frame.table
# Get a handle to text_frame to a particular cell
tf = table.cell(1,2).text_frame
p = tf.paragraphs[0]
p.text = "Bullet 1"
p.level = 1
# Second Bullet value
p = tf.add_paragraph()
p.text = "Bullet 2"
p.level = 1
# Third Bullet value
p = tf.add_paragraph()
p.text = "Bullet 3"
p.level = 1
上面的代码在单元格(1,2)中打印/显示3个字符串作为3行,但它们没有显示为项目符号点。
注意:在文本形状占位符中运行相同的代码将显示项目符号点。
shape = slide.placeholders[0] # This is a text placeholder.
tf = shape.text_frame
任何人都可以指导我我做错了什么吗?如何在表格单元格中显示项目符号点?
虽然您无法将项目符号添加到新创建的表格,但您可以更新目标单元格中已有项目符号的现有表格的文本。如果您的目标是自动定期更新现有套牌,这可以解决您的问题。
访问现有表格和段落。您需要确定幻灯片上的哪个形状与您的表格相对应。在我的示例中,我的表格形状为零。不要添加段落,否则您将在单元格中添加空白行。
tab1 = slide.shapes[0].table
tab1.cell(1, 1).text_frame.paragraphs[0].text = "New bullet 1."
tab1.cell(1, 1).text_frame.paragraphs[1].text = "New bullet 2."
nrows = len(tab1.rows)
for row in np.arange(1, nrows):
for paragraph in tab1.cell(row, 1).text_frame.paragraphs:
for run in paragraph.runs:
run.font.size = Pt(9)
run.font.name = 'Arial'