python pptx определяет ширину и высоту таблицы
Я использую Python 2.7 с Python PPTX.
У меня есть таблица данных и мне нужно, чтобы ноги определенной ширины и высоты,
Я узнал, что могу изменить размер текста, например, введите описание ссылки здесь.
Но я хочу изменить весь размер таблицы, чтобы она соответствовала точному местоположению, а с изменением размера шрифта и манипулированием высотой строки и шириной столбца все это кажется слишком сложным и трудным для обработки,
Я обнаружил, что могу превратить таблицу в изображение и легко изменить его размер, но это не совсем то, что нужно делать.
Идеи?
2 ответа
Пример, взятый из документации pptx, дает хороший пример того, как создать таблицу с заданным общим width
а также height
следующее:
from pptx import Presentation
from pptx.util import Inches
prs = Presentation()
title_only_slide_layout = prs.slide_layouts[5]
slide = prs.slides.add_slide(title_only_slide_layout)
shapes = slide.shapes
shapes.title.text = 'Adding a Table'
rows = cols = 2
left = top = Inches(2.0)
width = Inches(6.0)
height = Inches(0.8)
table = shapes.add_table(rows, cols, left, top, width, height).table
# set column widths
table.columns[0].width = Inches(2.0)
table.columns[1].width = Inches(4.0)
# write column headings
table.cell(0, 0).text = 'Foo'
table.cell(0, 1).text = 'Bar'
# write body cells
table.cell(1, 0).text = 'Baz'
table.cell(1, 1).text = 'Qux'
prs.save('test.pptx')
Модуль утилит также предоставляет альтернативы указанию размеров, таких как Centipoints
, Cm
, Emu
, Mm
, Pt
а также Px
,
На самом деле, мы можем попытаться использовать API-интерфейс Win32, предоставленный MS Office для этой проблемы. Это очень похоже на vba. Надеюсь, это найдет вас хорошо.
import win32com.client as win32
from win32com.client import constants
# 使用EnsureDispatch方法创建PowerPoint应用程序对象
#Use EnsureDispatch Method
ppt = win32.gencache.EnsureDispatch('PowerPoint.Application')
# iterate through all tables in the active document
for slide in ppt.ActivePresentation.Slides:
for shape in slide.Shapes:
# find out if there's a table in the slide
if shape.HasTable == -1:
table = shape.Table
# Set the table width to 24cm, We can divide the number of centimetres by 0.035278 to get the number of points.
shape.Width = 24 / 0.035278
# Set the table height to 24cm
shape.Height = 24 / 0.035278
# Set the height of the first row of the table to 1cm
table.Rows(1).Height = 1 / 0.035278
Посетите справочный документ Microsoft VBA для получения дополнительной информации.