LoginSignup
1
2

More than 1 year has passed since last update.

python-docxの備忘録

Last updated at Posted at 2021-12-21

毎日のように「Microsoft Word」を利用する職業の人にとって,ワード文書(docxファイル)を自動で生成するアプリケーションや,文書の内容を自動で解析できるアプリケーションは非常に便利です。

ただ,毎日のように「Microsoft Word」を利用する人は,それほど多くはいません。

したがって,上記のようなアプリケーションには需要がなく,(感覚ベースですが)なかなか開発されないようです。

既存のアプリケーションが無いなら自分で作るしかありません。

本記事では,毎日のように「Microsoft Word」を利用する人の救世主になりうる「python-docx」について,備忘録も兼ねて記載します。

毎日のように「Microsoft Word」を利用する職業の人とは?ここでは弁護士その他の士業の人を想定しています。

python-docxで実現可能になること

そもそも「python-docx」を使えば,何が可能になるでしょうか?

たとえば,次のようなことが可能になります。

  • 段落の挿入
  • 文字のスタイル変更(フォントサイズやテキストカラー)
  • テーブル(表)の挿入

毎日のように「Microsoft Word」を利用する職業の人が,職業上使用する文書を作成する上で必要な機能は一通り揃っている印象です。

python-docxについての文献

python-docxに関する日本語の文献は多くはありませんが,python-docxについては公式のドキュメントが非常にわかりやすいため,こちらを見るだけで,相当程度は使いこなすことができそうです。

python-docxのインストール方法

pipを使ってインストール可能です。

pip install python-docx

python-docxの基本的な使い方

python-docxの基本的な使い方は,次の通りであると理解しています。

文書の作成及び保存

docx文書を作成し,「sample.docx」という名称で保存するためには,次のコードを書くだけです。

from docx import Document
doc = Document()
doc.save('sample.docx')

段落の挿入

文書の作成後,段落を挿入するためには,次のコードを記載します。

p = doc.add_paragraph()
p.add_run("テキストテキスト")

まず段落の枠を作って,その枠に文字を追加するイメージです。

これを繰り返せば,一定の文書が自動で作成可能です。

テーブル(表)の挿入

文書の作成後,テーブル(表)を挿入するためには,次のコードを記載します。

table = document.add_table(rows=2, cols=2)

th_cells = table.rows[0].cells
th_cells[0].text = 'テキスト'
th_cells[1].text = 'テキスト'

tr_cells = table.rows[1].cells
tr_cells[0].text = 'テキスト'
tr_cells[1].text = 'テキスト'

これだけで,2行2列のテーブルを挿入できます。

for文を使って繰り返し処理をすれば,自動で一定の法則に従った表を作れるのでかなり便利だと思います。

画像の挿入

次に文書に画像を挿入するためには,次のようなコードを記載します。

document.add_picture('サンプル.png', width=Inches(1.25))

最後に

本記事では,python-docxの基本的な使い方を記載しました。

毎日のように「Microsoft Word」を利用する職業の人が,自分でワード文書(docxファイル)を自動で生成するアプリケーションや,文書の内容を自動で解析できるアプリケーションを作りたいと思った時に参考にしていただけると幸いです。

なお,この記事は適時更新する予定です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2