Python 自動化

python-pptxでテーブルの枠線(border)を設定する

この記事は約7分で読めます。

 

Pythonのライブラリであるpython-pptxを使用すると、PowerPointのプレゼンテーションにテーブルを追加し、様々な操作を行うことができます。今回は、python-pptxを使ってテーブルの枠線を設定する方法を説明します。

 

スライドにテーブルを挿入する

 

関連記事:【Python】python-pptxでパワポの資料作成を自動化する

 

まず、python-pptxをインストールします。以下のコマンドを実行してください。

 

$ pip install python-pptx

 

次に、PowerPointのプレゼンテーションを作成するために必要なモジュールをインポートしてスライドを作成してテーブルを挿入します。

 

from pptx import Presentation
from pptx.util import Cm
from pptx.oxml.xmlchemy import OxmlElement

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[0])

rows = 2 #行
cols = 2 #列
left = Cm(6)
top =Cm(4)
width = Cm(6)
height = Cm(4)
table = slide.shapes.add_table(rows, cols, left, top, width, height).table

# 表にテキストを書き込む
table.cell(0, 0).text = 'Header'
table.cell(0, 1).text = 'Header'
table.cell(1, 0).text = 'Value 1'
table.cell(1, 1).text = 'Value 2'

 

python-pptxでテーブルの枠線(border)を設定する

 

枠線を設定するコードサンプルは以下になります

 

def SubElement(parent, tagname, **kwargs):
    element = OxmlElement(tagname)
    element.attrib.update(kwargs)
    parent.append(element)
    return element

def _set_cell_border(cell, border_color="#000000", border_width='12700'):
    """ Hack function to enable the setting of border width and border color
    - left border
    - right border
    - top border
    - bottom border
    """
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
     # Left Cell Border
    lnL = SubElement(tcPr, 'a:lnL', w='3175', cap='flat', cmpd='sng', algn='ctr')
    lnL_solidFill = SubElement(lnL, 'a:solidFill')
    lnL_srgbClr = SubElement(lnL_solidFill, 'a:srgbClr', val=border_color)
    lnL_prstDash = SubElement(lnL, 'a:prstDash', val='solid')
    lnL_round_ = SubElement(lnL, 'a:round')
    lnL_headEnd = SubElement(lnL, 'a:headEnd', type='none', w='med', len='med')
    lnL_tailEnd = SubElement(lnL, 'a:tailEnd', type='none', w='med', len='med')
    # Right Cell Border
    lnR = SubElement(tcPr, 'a:lnR', w='3175', cap='flat', cmpd='sng', algn='ctr')
    lnR_solidFill = SubElement(lnR, 'a:solidFill')
    lnR_srgbClr = SubElement(lnR_solidFill, 'a:srgbClr', val=border_color)
    lnR_prstDash = SubElement(lnR, 'a:prstDash', val='solid')
    lnR_round_ = SubElement(lnR, 'a:round')
    lnR_headEnd = SubElement(lnR, 'a:headEnd', type='none', w='med', len='med')
    lnR_tailEnd = SubElement(lnR, 'a:tailEnd', type='none', w='med', len='med')
    # Top Cell Border
    lnT = SubElement(tcPr, 'a:lnT', w='3175', cap='flat', cmpd='sng', algn='ctr')
    lnT_solidFill = SubElement(lnT, 'a:solidFill')
    lnT_srgbClr = SubElement(lnT_solidFill, 'a:srgbClr', val=border_color)
    lnT_prstDash = SubElement(lnT, 'a:prstDash', val='solid')
    lnT_round_ = SubElement(lnT, 'a:round')
    lnT_headEnd = SubElement(lnT, 'a:headEnd', type='none', w='med', len='med')
    lnT_tailEnd = SubElement(lnT, 'a:tailEnd', type='none', w='med', len='med')
    # Bottom Cell Border
    lnB = SubElement(tcPr, 'a:lnB', w='3175', cap='flat', cmpd='sng', algn='ctr')
    lnB_solidFill = SubElement(lnB, 'a:solidFill')
    lnB_srgbClr = SubElement(lnB_solidFill, 'a:srgbClr', val=border_color)
    lnB_prstDash = SubElement(lnB, 'a:prstDash', val='solid')
    lnB_round_ = SubElement(lnB, 'a:round')
    lnB_headEnd = SubElement(lnB, 'a:headEnd', type='none', w='med', len='med')
    lnB_tailEnd = SubElement(lnB, 'a:tailEnd', type='none', w='med', len='med')
    return cell

cell = table.cell(0, 0)
cell = _set_cell_border(cell)
prs.save('sample.pptx')

 

border_color=”#000000″, border_width=’12700′

でテーブルのセルのborderの色と幅を設定できます

 

ただこれをするとパワポを開いた際に修復メッセージが出るようになります(レイアウト的には問題ないです)

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました