Colorful Wires

エンジニアリングの勉強の記録

docx + jinja2 テンプレートを Python から使用する

概要

f:id:moge560:20200726123332p:plain

この記事では、Python で docx ファイルにおいて jinja2 テンプレートを使用可能にするパッケージ python-docx-template の使い方を整理します。

インストール

pip install docxtpl

基本の使い方

docx ファイルに jinja2 形式でコマンドを記入します。

f:id:moge560:20200726174346p:plain
docx ファイルに jinja2 形式のコメントを記入する

よく使うのは以下のコマンドです。

  • 変数の表示:{{ 変数名 }}
  • ループ:{% for element in sequence %} {element.myproperty} {% endfor %}

書けたら以下のスクリプトで処理します。

from docxtpl import DocxTemplate
doc = DocxTemplate("template_demo.docx")
doc.render(
  {
    "xs": [
      { "name":" taro", "age": 16 },
      { "name": "hanako", "age": 20 },
    ],
  }
)
doc.save("out.docx")

通常の jinja2 との違い

  • タグは run 単位でしか書けません。run は同じ書式の文字列の系列のことです。

所感

仕事でレポート生成に使うので調査しました。