3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【python3】 Excelの表データをPowerPointの表に転記するツール

Posted at

はじめに

Excelの表のデータを、PowerPointの表のデータに転記する自動化ツールをpythonで実装しました

転記元のExcelの表

今回転記する表は以下の通りです。

Excel.jpg

転記前のPowerPointの表

before_ppt.jpg

実装したソースコード

実装したソースコードは下記のとおりです。

#################################################
#   Excelからpowerpointの表にデータコピーテスト
#################################################

# ライブラリをインポート
import openpyxl
from pptx import Presentation
from pptx.util import Inches
# Excel表データ用配列
excel_data = []


# Excelの表から、PowerPointの表に転記するデータを取り出し、配列に格納する。
def excel_data_copy():
    # Excelファイルを開く
    excel_file = '調査結果.xlsx'
    sheet_name = '調査結果'

    # Excelファイルが開いていれば例外処理に遷移し、ファイルを閉じるメッセージを出力して終了する。
    try:
        wb = openpyxl.load_workbook(excel_file)
        ws = wb[sheet_name]
    except:
        print(f"{excel_file}が開いています。閉じてください")    



    # Excelデータ開始変数
    start_row = 4
    # Excelデータ終了行変数
    end_row = 0
    # カウント変数
    i = start_row
    while True:
        v1 = ws.cell(row=i,column=3).value
        if v1 == None:
            break
        else:
            i += 1
    
    # 最終行を取得
    end_row = i-1
    for row in ws.iter_rows(values_only=True,min_row=start_row,max_row=end_row,min_col=3):
        excel_data.append(row)

def powerpoint_table_copy():
    # PowerPointプレゼンテーションを作成
    ppt_file = "プレゼンテスト6.pptx"
    ppt = Presentation(ppt_file)

    slide = ppt.slides[1]
    # 表を追加
    rows = 2
    cols = 6
    left = Inches(1.0)
    top = Inches(2.0)
    width = Inches(8.0)
    height = Inches(1.5)

    table = slide.shapes.add_table(rows, cols, left, top, width, height).table

    for j in range(rows):
        array1 = excel_data[j]
        leng1 = len(array1)
        for k in range(leng1):
            data2 = array1[k]
            table.cell(j, k).text = str(data2)
        

    # PowerPointファイルを保存
    try:
        ppt.save(ppt_file)
    except PermissionError:
        print(f"{ppt_file}が開いています。閉じてください") 

# メイン関数
def main():
    excel_data_copy()
    powerpoint_table_copy()

# 主処理
if __name__ == "__main__":
    main()            

ツール実行後のpowerpointの表

after_ppt.jpg

最後に

必要に迫られたので実装、テストしました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?