ならんのITと読書と共に生きるブログ

ネタバレなしで本んを読んでみたい!ITなどの最新情報を知りたいという人に向けて語るためのブログです。

【Word自動化】ヘッダー込みのWord生成プログラム【Python】

f:id:acfoapon:20200308163649j:plainf:id:acfoapon:20200308163649j:plain

背景

日報を出すとに、Wordファイルを何回も作るのが面倒だった。 定型的な業務の日報の作成を自分でやりたくなくなった。 なので、今流行しているPythonを使って、自動化プログラムを作成した。

目的

Pythonファイルを実行するだけで、簡単に報告書のレイアウトを生成するのが目的

要件定義

  1. Wordファイルの生成
  2. 今日の日付を入れる
  3. ヘッダーを使えるようにする
  4. タイトルの色を黒にする

原案

思いついた走り書きを言語化して、作成しました

環境

  • Windows10Pro

  • Python3.7

  • Anaconda

環境構築方法

Anaconda Promptを起動します。
Prompt内に下記のコードを記述します。

pip install python-docx

実際に書いたコード

from docx import Document
from docx.enum.text import WD_TAB_ALIGNMENT, WD_COLOR_INDEX
from docx.shared import Pt
import datetime

now_time = datetime.datetime.now()
filename = now_time.strftime('%Y_%m%d' + '.docx')
TodayDate = now_time.strftime('%Y/%m/%d')
FilePath = r'C:\Users\デスクトップ\/'

doc = Document()

header_section = doc.sections[0].header

# 標準の文字の大きさ指定
style = doc.styles['Normal']
font = style.font
font.size = Pt(10.5)

# font=doc.styles['Nomal'].font



# シンプルな方
ToDate = header_section.paragraphs[0]
ToDate.text = str(TodayDate) + '\n' + '名前'
ToDate.alignment = WD_TAB_ALIGNMENT.RIGHT

# 段落に見出し追加
doc.add_heading('日報', 0).alignment = WD_TAB_ALIGNMENT.CENTER

# 段落に文章追加
doc.add_heading('目的', 2)
paragraph = doc.add_paragraph('')
doc.add_paragraph('')
doc.add_paragraph('')

doc.add_heading('本日の成果', 2)
doc.add_paragraph('')
doc.add_paragraph('')
doc.add_paragraph('')

doc.add_heading('課題', 2)
doc.add_paragraph('')
doc.add_paragraph('')
doc.add_paragraph('')

doc.styles["Title"].font.color.theme_color = WD_COLOR_INDEX.BLACK
doc.styles["Heading 2"].font.color.theme_color = WD_COLOR_INDEX.BLACK

paragraph.style = doc.styles['Normal']
doc.save(FilePath + filename)


実行結果

コードを実行するとこのような結果になります! f:id:acfoapon:20200302210714p:plain

感想

思ったよりも簡単にできたが、自分の詰めが甘く、4時間くらいかかって、作った。 ドキュメントをちゃんと読むようにするぞ!!

参考文献

Python で docx を使って Microsoft Word を操作する

Put Header with Python - Pythonでヘッダーを配置:docx

僕が質問したこと

公式ドキュメント