2017-06-21 15 views
0

現在、次のコードを使用して、既存のPowerpointプレゼンテーションのプレースホルダ(テキストデータ)を定義して置き換えています。Pythonを使用して既存のPowerpointのチャートからデータを定義、抽出、置換する方法

current_dir = os.path.dirname(os.path.realpath(__file__)) 

prs = Presentation(current_dir + '/test2.pptx') 

slides = prs.slides 

title_slide_layout = prs.slide_layouts[0] 
slide = slides[0] 
for shape in slide.placeholders: 
    print('%d %s' % (shape.placeholder_format.idx, shape.name)) 
title = slide.shapes.title 
subtitle1 = slide.shapes.placeholders[0] 
subtitle2 = slide.shapes.placeholders[10] 
subtitle10 = slide.shapes.placeholders[11] 
subtitle11 = slide.shapes.placeholders[12] 

subtitle1.text = "1" 
subtitle2.text = "2" 
subtitle10.text = "3" 
subtitle11.text = "4" 


slide2 = slides[1] 
for shape in slide2.placeholders: 
    print('%d %s' % (shape.placeholder_format.idx, shape.name)) 
subtitle3 = slide2.shapes.placeholders[10] 
subtitle4 = slide2.shapes.placeholders[11] 
subtitle5 = slide2.shapes.placeholders[12] 
subtitle6 = slide2.shapes.placeholders[13] 
subtitle12 = slide2.shapes.placeholders[16] 
companydate = slide2.shapes.placeholders[14] 

subtitle3.text = "1" 
subtitle4.text = "2" 
subtitle5.text = "3" 
subtitle6.text = "4" 
subtitle12.text = "40%" 
companydate.text = "Insert company" 

slide3 = slides[2] 
for shape in slide3.placeholders: 
    print('%d %s' % (shape.placeholder_format.idx, shape.name)) 
subtitle7 = slide3.shapes.placeholders[10] 
subtitle8 = slide3.shapes.placeholders[11] 
subtitle9 = slide3.shapes.placeholders[12] 
subtitle13 = slide3.shapes.placeholders[16] 
companydate2 = slide3.shapes.placeholders[14] 

subtitle7.text = "1" 
subtitle8.text = "2" 
subtitle9.text = "3" 
subtitle13.text = "5x" 
companydate2.text = "Insert Company" 

slide4 = slides[3] 
# for shape in slide4.placeholders: 
#print('%d %s' % (shape.placeholder_format.idx, shape.name)) 
companydate3 = slide4.shapes.placeholders[14] 
companydate3.text = "Insert Company" 

"'Adapting Charts'" 
from pptx.chart.data import ChartData 
from pptx.enum.chart import XL_CHART_TYPE 
from pptx.util import Pt 

"Adapting Chart 1" 

prs1 = Presentation(current_dir + '/output4.pptx') 
slides1 = prs1.slides 

chart1 = prs1.slides[0].chart 

しかし、私はまた、バックグラウンドで分析を実行しているし、抽出し、それらのチャートにデータを交換するとともに、同じプレゼンテーションのグラフを認識(定義)することが可能である場合、私は思っていました。これらのチャードはテンプレートに埋め込まれていません。 plotlyまたはmathplotlibを使用したプロットチャートでは、準拠した画像が表示されないため、次の形式に完全に変更されていない限り、これらを使用できません。Graph budget Click Correl もしそうなら、具体的なコーディング例を挙げることはできますか?

ありがとうございます!

答えて

0

はい、可能です。ドキュメントがあなたの最良のソースになります。

これは、チャートの形があります:データは新しいChartDataオブジェクトを作成し、上.replace_data()を呼び出すことによって置き換えられ

for series in chart.series: 
    for value in series.values: 
     print(value) 

:データはグラフ系列(ES)から抽出された

for shape in slide.shapes: 
    if shape.has_chart: 
     chart = shape.chart 
     print('found a chart') 

そのチャートデータオブジェクトを使用するチャート:

chart_data = ChartData(...) 
... # add categories, series with values, etc. 
chart.replace_data(chart_data) 

http://python-pptx.readthedocs.io/en/latest/api/chart.html#pptx.chart.chart.Chart.replace_data

+0

こんにちはスカニー、ありがとう、私はすぐにそれを試して結果を知ってみましょう。 – MattDM

関連する問題