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の色と幅を設定できます
ただこれをするとパワポを開いた際に修復メッセージが出るようになります(レイアウト的には問題ないです)
コメント