Установить обтекание текстовой рамки меток данных на false - python -pptx - PullRequest
0 голосов
/ 02 апреля 2020

Я спрашиваю дубликат этого вопроса , за исключением того, что представленный ответ не работает для меня. Я бы хотел переключить кнопку data_labels «Обтекание текста в форме» из пользовательского интерфейса powerpoint с помощью python -pptx. Связанный ответ в итоге полностью удаляет метки данных. Я использую последнюю версию python -pptx (0.6.18).

Вот простой пример для репликации:

from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Cm
from pptx.text.text import TextFrame

# create presentation with 1 slide ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
x = ['one','two','three', 'four']
y = [['diff',
  [1,
   2,
   3,
   4,
]],
 ]
specs = {
    'height': Cm(7.82),
    'width': Cm(14.8),
    'left': Cm(2.53),
    'top': Cm(5.72)}
data = ChartData()
data.categories = x
data.add_series('diff', [j for j in y[0][1]])

frame = slide.shapes.add_chart(
    XL_CHART_TYPE.BAR_CLUSTERED, specs['left'], specs['top'], 
    specs['width'], specs['height'], data
)
plot = frame.chart.plots[0]
plot.has_data_labels = True
data_labels = plot.series[0].data_labels
dLbls = data_labels._element
# ---use its <c:txPr> child to create TextFrame object---
text_frame = TextFrame(dLbls.get_or_add_txPr(), None)
# ---turn off word-wrap in the usual way---
text_frame.wrap = False

prs.save('chart-01.pptx')

1 Ответ

1 голос
/ 02 апреля 2020

Я полагаю, что от второй до последней строки должно быть text_frame.word_wrap = False, а не .wrap; Это моя ошибка в предыдущем ответе (теперь исправлена).

Также измените эту строку:

data_labels = plot.series[0].data_labels

на:

data_labels = plot.data_labels

И я думаю, вы получите что вы ищете.

...