概要 以下のように表形式で管理している情報を、Microsoft Wordの縦書きフォーマットに変換する機会がありましたので、その備忘録です。
変換前
研究課題名 課題番号 直接経費 持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発 21K18014 2600000 変換後
指定されたテンプレートの利用や、「数字 <-> 漢数字 の相互変換ライブラリ 「Kanjize」」を利用しています。
python-docxを用いたMicrosoft Wordファイルの作成 まず、以下のようなMicrosoft Wordのテンプレートファイルを作成します。指定されたレイアウトを使用しつつ、値を変更したい部分に{<変数名>}を指定します。
そして、上記のテンプレートで使用した変数名に対応したjsonファイルなどを作成します。
{ "direct_cost": "二百六十万", "indirect_cost": "七十八万", "period_end": "二〇二三", "period_start": "二〇二一", "principal_investigator": "中村 覚", "project_number": "二一K一八〇一四", "research_category": "若手研究", "research_title": "持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発" } そして、以下のようなpythonスクリプトを実行することにより、指定されたフォーマットに基づくMicrosoft Wordファイルを作成することができます。
import docx import json item = { "direct_cost": "二百六十万", "indirect_cost": "七十八万", "period_end": "二〇二三", "period_start": "二〇二一", "principal_investigator": "中村 覚", "project_number": "二一K一八〇一四", "research_category": "若手研究", "research_title": "持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発" } doc = docx.Document("template.docx") for para in doc.paragraphs: text = para.text for key in item: target = "{"+key+"}" if target in text: text = text.replace(target, item[key]) para.text = text opath = "output.docx" doc.save(opath) 数字 <-> 漢数字 の相互変換 上記の入力用のjsonファイルを作成するにあたり、数字を漢数字に変換する必要がありました。
例:2600000 -> 二百六十万
...