事前準備
python-pptx
pip install python-pptx
ライブラリを導入してください
テンプレート
https://www.microsoft.com/ja-jp/office/pipc/template/result.aspx?id=14427&pr=pptx
今回使用するテンプレートは上記から入手
テンプレートの確認
構造を調べる
以下のようなコードで、構造を調べます。今回は表の中のテキストを書き換えたいので、表を探します。
1ページには表が1つ[0]、2ページ目には表が2つ[2][3][4]存在してることが分かります。
import pptx
prs = pptx.Presentation('24800_jikanwari.pptx')
print("1ページ目")
slide = prs.slides[0]
for shape in slide.shapes:
print(shape.has_table)
print("2ページ目")
slide = prs.slides[1]
for shape in slide.shapes:
print(shape.has_table)
表内のテキストを取得する
表内のテキストを取得してみて、修正したい表なのかを確認します。
import pptx
prs = pptx.Presentation('24800_jikanwari.pptx')
#-------------
# 1ページ目
#-------------
print("1ページ目")
tbl = prs.slides[0].shapes[0].table
for row in tbl.rows:
values = []
for cell in row.cells:
values.append(cell.text)
print(values)
#-------------
# 2ページ目
#-------------
print("2ページ目")
tbl = prs.slides[1].shapes[4].table
for row in tbl.rows:
values = []
for cell in row.cells:
values.append(cell.text)
print(values)
表を書き換える
構造がわかって、テキストも取得できてるので、書き換えは簡単だと思います。
import pptx
#-----------
# データ配列
#------------
p1_data =list()
p1_data=[
['', '', '', '', '', '', ''],
['', '', '', '', '', '', ''],
['', '', '', '', '', '', ''],
['中休み1', '中休み', '中休み', '中休み', '中休み', '', ''],
['', '', '', '', '', '', ''],
['', '', '', '', '', '', ''],
['昼ごはん2', '昼ごはん', '昼ごはん', '昼ごはん', '昼ごはん6', '', ''],
['昼休み3', '昼休み', '昼休み', '昼休み', '昼休み', '', ''],
['', '', '', '', '', '', ''],
['おやつ4', 'おやつ', 'おやつ', 'おやつ', 'おやつ5', '', ''],
['', '', '', '', '', '', ''],
]
p2_data =list()
p2_data =[
['', ''],
['', ''],
['', ''],
['中休み1', ''],
['', ''],
['', ''],
['昼ごはん2', ''],
['昼休み3', ''],
['', ''],
['おやつ', ''],
['', ''],
]
#-----------
#
#------------
prs = pptx.Presentation('24800_jikanwari.pptx')
# 1ページ目
tbl = prs.slides[0].shapes[0].table
for i in range(len(p1_data)):
for j in range(len(p1_data[i])):
tbl.cell(i, j).text =str(p1_data[i][j])
# 2ページ目
tbl = prs.slides[1].shapes[4].table
for i in range(len(p2_data)):
for j in range(len(p2_data[i])):
tbl.cell(i, j).text =str(p2_data[i][j])
#----------
# ファイル出力
#----------
prs.save('test04.pptx')
CSVファイルから読み込む
1つめのデータ配列をCSVファイルから読むこむように修正してみました
import pptx
import csv
#-----------
# データ配列
#------------
# CSVデータを読み込んで配列に
p1_data =list()
with open('.\data.csv') as f:
reader = csv.reader(f)
p1_data = [row for row in reader]
#
p2_data =list()
p2_data =[
['', ''],
['', ''],
['', ''],
['中休み1', ''],
['', ''],
['', ''],
['昼ごはん2', ''],
['昼休み3', ''],
['', ''],
['おやつ', ''],
['', ''],
]
# 残りは同じ
動画での説明
スポンサーリンク
コメントを残す