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 для получения дополнительной информации.

Другие вопросы по тегам