Python PPTX получить ширину таблицы
Я работаю с Python 2.7 и с помощью Python Pptx.
Я добавляю таблицу к своему слайду, и мне нужно получить полную ширину таблицы.
Я нашел здесь ширину атрибута _column и попробую использовать его, например, с этим кодом
for col in table._column:
yield col.width
и получите следующую ошибку:
AttributeError: у объекта 'Table' нет атрибута '_column'
Мне нужно получить ширину таблицы (или ширину столбцов и сложить ее). идеи?
Спасибо!
1 ответ
Недвижимость, которую вы хотите на Table
является .columns
, так:
for column in table.columns:
yield column.width
Все свойства и описание каждого из них доступны в разделе API документации, например, эта страница описывает API объекта таблицы: http://python-pptx.readthedocs.io/en/latest/api/table.html
Создавая код Scanny и документацию pptx, мы можем определить функцию, подобную этой, для печати измерений всего существующего табличного объекта python-pptx:
from pptx import Presentation
from pptx.util import Inches, Cm, Pt
def table_dims(table, measure = 'Inches'):
"""
Returns a dimensions tuple (width, height) of your pptx table
object in Inches, Cm, or Pt.
Defaults to Inches.
This value can then be piped into an Inches, Cm, or Pt call to
generate a new table of the same initial size.
"""
widths = []
heights = []
for column in table.columns:
widths.append(column.width)
for row in table.rows:
heights.append(row.height)
# Because the initial widths/heights are stored in a strange format, we'll convert them
if measure == 'Inches':
total_width = (sum(widths)/Inches(1))
total_height = (sum(heights)/Inches(1))
dims = (total_width, total_height)
return dims
elif measure == 'Cm':
total_width = (sum(widths)/Cm(1))
total_height = (sum(heights)/Cm(1))
dims = (total_width, total_height)
return dims
elif measure == 'Pt':
total_width = (sum(widths)/Pt(1))
total_height = (sum(heights)/Pt(1))
dims = (total_width, total_height)
return dims
else:
Exception('Invalid Measure Argument')
# Initialize the Presentation and Slides objects
prs = Presentation('path_to_existing.pptx')
slides = prs.slides
# Access a given slide's Shape Tree
shape_tree = slides['replace w/ the given slide index'].shapes
# Access a given table
table = shape_tree['replace w/ graphic frame index'].table
# Call our function defined above
slide_table_dims = table_dims(table)
print(slide_table_dims)