この記事では、Pythonを使ってWordの文書を新規作成する方法と作成した文書の内容を読み込んだり、書き換え・追記する方法を解説します。
PythonでWordを扱うには「python-docx」が便利です。pip
でインストールできるので以下のコマンドをコマンドラインで実行してください。
pip install python-docx
インストールしたpython-docxはdocx
という名前でインポートすることができます。
import docx
Wordの新規文書は以下のようなコードで作成することができます。
import docx
# 白紙の新規文書作成
doc = docx.Document()
# カレントディレクトリに「test.docx」を保存
doc.save('test.docx')
上記コードを実行することでカレントディレクトリに「test.docx」という名前の新規文書を作成することができます。
save()
の引数には絶対パスや相対パスを指定することができる.docx
)は必ず付ける必要があるdocx.Document()
の引数にパスやストリームを指定することでファイルを開くことができます。
import docx
# 先ほど作成した「test.docx」を開く
doc = docx.Document('test.docx')
PermissionError
が送出されるdocx.opc.exceptions.PackageNotFoundError
が送出されるadd_heading()
を使うことで末尾に段落を追加し、そこに見出しを書き込むことができます。
Document.add_heading(text='', level=1)
level
引数は 0~9 まで指定することができ、0は表題(タイトル)、1は見出し1として書き込むことができます。
import docx
doc_path = 'test.docx'
# 新規文書の作成
doc = docx.Document()
# 見出しの追加
doc.add_heading('表題', 0)
doc.add_heading('見出し1', 1)
doc.add_heading('見出し2', 2)
doc.add_heading('見出し3', 3)
doc.add_heading('見出し4', 4)
doc.add_heading('見出し5', 5)
doc.add_heading('見出し6', 6)
doc.add_heading('見出し7', 7)
doc.add_heading('見出し8', 8)
doc.add_heading('見出し9', 9)
# 保存
doc.save(doc_path)
上記コードを実行すると以下のような文書が作成されます。
add_paragraph()
を使うことで末尾に段落を追加し、そこに文章を書き込むことができます。
Document.add_paragraph(text: str = '', style=None)
style
引数を指定することで文字のスタイルを変更することができます。また、テキストにはタブ文字や改行などのエスケープシーケンスを使用することができます。
import docx
doc_path = 'test.docx'
# 新規文書の作成
doc = docx.Document()
# 文章の追加
doc.add_paragraph('吾輩は猫である') # 通常
doc.add_paragraph('吾輩は\n猫\tである') # エスケープシーケンス
doc.add_paragraph('吾輩は猫である', 'Quote') # スタイル変更: 引用文
# 保存
doc.save(doc_path)
上記コードを実行すると以下のような文書が作成されます。
使用可能なスタイルは以下のリンクを確認してください。
外部リンクParagraph styles in default template - Understanding Styles — python-docx 1.0.1 documentation
書式はadd_paragraph()
で指定できないのでadd_run()
で文を追加しつつ、設定していきます。
import docx
doc_path = 'test.docx'
# 新規文書の作成
doc = docx.Document()
# 段落のみの追加
p = doc.add_paragraph()
# 段落に文章を追加する
wagahai = p.add_run('吾輩')
p.add_run('は')
neko = p.add_run('猫')
p.add_run('である')
# 太字と斜体
wagahai.bold = True
neko.italic = True
# 保存
doc.save(doc_path)
上記コードを実行すると以下のような文書が作成されます。
開いた文書からadd_paragraph()
などを呼び出すことで末尾に追記することが可能です。
import docx
doc_path = 'test.docx'
# 先ほどの文書を開く
doc = docx.Document(doc_path)
# 追記部分
doc.add_heading('追記', 1)
doc.add_paragraph('名前はまだ無い。')
# 保存
doc.save(doc_path)
以下のように追記することができました。
文書の内容を読み込むには文書をdocx.Document()
で開き、paragraphs
属性からすべての段落(paragraph
オブジェクト)を取得します。そしたら、各段落からtext
属性を呼び出すだけで内容を文字列として取得できます。
import docx
doc_path = 'test.docx'
# 文書を開く
doc = docx.Document(doc_path)
# 段落の取得(文書順のリスト)
paragraphs = doc.paragraphs
# 各段落からテキストを出力
for paragraph in paragraphs:
print(paragraph.text)
実行結果
吾輩は猫である
追記
名前はまだ無い。
この記事ではPythonを使ってWordの文書を操作する方法を解説しました。
文書を新規作成できたり、書き込みや追記、読み込みができたりとpython-docx
を使うことでWord関係の処理は至れり尽くせりでしたね。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ