【5分でわかる】PythonでWordを新規作成する方法:10事例解説

【5分でわかる】PythonでWordを新規作成する方法:10事例解説

 

【悩み】
・PythonでWord文書を新規作成したい。
・Word文書を操作できるPythonライブラリは存在する?
・Pythonで集計したデータなどをWord文書に自動転記したい。



こういった「悩み」に答えます。
 

【本記事の内容】
① Word文書向けのPythonライブラリとは?
➁ 事前準備:各種インストールとWordの構造理解
➂ PythonでWord文書を新規作成:10の事例



本記事に掲載した方法を実践したことで、PythonからWord文書(docxやdocファイル)を新規作成できました(下の動画参照)。
 

PythonでWord文書を新規作成した例



記事の前半では「Word文書に関連するPythonライブラリの一覧」と「よく使われるライブラリ」について解説します。

記事の後半では「ライブラリのインストール方法などの環境準備」と「Word文書を新規作成するPythonプログラム」を説明します。
 

この記事を読み終えることで、「Pythonでデータ集計した結果などをWord文書に転記できる」状態になります。
 

ちなみに、「編集」「変換」「抽出」といった操作もPythonで実施できます。以下の記事にまとめているので興味がある方は是非ご覧ください。


 

Word文書向けのPythonライブラリとは?


Pythonで使えるWord関連のライブラリに関してご紹介します。
 

【ご紹介事項】
・Word関連のPythonライブラリ3選
・python-docxとは?:一通りの操作が可能
・bayoo-docxとは?:コメント挿入が可能



以降で、上記の各項目に関して説明します。
 

Word関連のPythonライブラリ3選

PythonでWordを操作できるライブラリとして、以下があります。
 

【ライブラリ一覧】
python-docx(OSS)
Bayoo-docx(OSS)
Aspose.Words(商用)



以降で各ライブラリの「できること」「ライセンス」「開発頻度」「開発言語」に関して説明します。
 

python-docxとは?:一通りの操作が可能

python-docxライブラリの概要を以下に記載します。
 

【python-docxとは】
本ライブラリを使うことで「無料でWordの作成や編集」ができます。そのため、新規作成などの基本的な操作を無料で実現できます。
ただし、コメント挿入は現時点(2023年2月28日時点)でできません。



ライセンスに関して以下に記載します。
 

【ライセンスについて】
python-docxのライセンスは、MIT(2023年2月28日時点)です。
特に制限なく、無料で使えます。
参照:
python-docxのライセンスページ(GitHub)
MITとは(Wikipedia)



また、「直近でどのぐらい活発に開発されているか?」に関する情報は、以下のサイトから確認できます。
参照:python-docxの開発頻度(GitHub)
 

python-docxの開発頻度



上図より、python-docxは活発に開発されているライブラリではないです。
そのため、脆弱性やバグがあった場合、即座に修正されず、利用者自身でライブラリの修正が必要になると考えられます。
商用で本ライブラリを使う際は、注意してください。
 

ちなみに、python-docxは、以下の言語で開発されています。
参照:python-docxの開発言語(GitHub)
 

python-docxの開発言語


 

bayoo-docxとは?:コメント挿入が可能

bayoo-docxライブラリの概要を以下に記載します。
 

【bayoo-docxとは】
bayoo-docxを使うことで「Wordにコメント挿入」ができます。
bayoo-docxは、python-docxをfork(派生)して作成されたライブラリです。
そのため、python-docxの機能も使えます。



本ライブラリのライセンスに関して以下に記載します。
 

【ライセンスについて】
bayoo-docxのライセンスは、MIT(2023年2月28日時点)です。
特に制限なく、無料で使えます。
参照:bayoo-docxのライセンスページ(GitHub)



また、「直近でどのぐらい活発に開発されているか?」に関する情報は、以下のサイトから確認できます。
参照:bayoo-docxの開発頻度(GitHub)
 

bayoo-docxの開発頻度



上図より、python-docxと比べるとbayoo-docxの方が活発に開発されているように見えます。ただし、上図より、2021年以降からは定期的な開発がされていないです。
そのため、脆弱性やバグがあった場合、即座に修正されず、利用者自身でライブラリの修正が必要になると考えられます。
商用で本ライブラリを使う際は、注意してください。
 

ちなみに、bayoo-docxは、以下の言語で開発されています。
参照:bayoo-docxの開発言語(GitHub)
 

bayoo-docxの開発言語


 

Aspose.Wordsとは?:商用ライブラリ

Aspose.Wordsライブラリの概要を以下に記載します。
 

【Aspose.Wordsとは】
Aspose.Wordsを使うことで「Wordの作成や編集」だけでなく「PDFをWordに変換」などの応用的な操作もできます。



Aspose.Wordsのライセンスに関して以下に記載します。
 

【ライセンスについて】
Aspose.WordsはOSSではなく、Aspose社が開発した商用ライブラリです。
評価用に無料で使える機能はありますが、全機能を使いたい場合、お金がかかります。
参照:Aspose.Wordsの料金プラン



また、Aspose.Wordsの「直近でどのぐらい活発に開発されているか?」に関する情報は、以下のサイトから確認できます。
参照:Aspose.Wordsのリリース頻度(pypi)
 

Aspose.Wordsの開発頻度



上図より、Aspose.Wordsは活発に開発されているライブラリに見えます。
そのため、脆弱性やバグがあった場合、即座に修正されると考えられます。

 

PythonでWordの操作をしたい場合、3つのライブラリから選択しましょう。基本的な操作であれば、OSSであるbayoo-docxまたはpython-docxを選択すれば問題ないです。


 

事前準備:各種インストールとWordの構造理解


「PythonでWord文書の新規作成するための準備」に関してご紹介します。
 

【流れ】
手順1:Pythonのインストール
手順2:python-docxとbayoo-docxのインストール
手順3:Word文書のオブジェクト構造



上記の流れで説明します。
 

Pythonのインストール

以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。

>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】

>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】

>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照

>> 【環境構築】インストーラーでMacOSにPythonをインストール

 

python-docxとbayoo-docxのインストール

python-docxとbayoo-docxライブラリをインストールするために、以下のコマンドを順番に実行してください。

pip install python-docx
pip install bayoo-docx
pip list



コマンド実行後、「python-docx(バージョン)」と「bayoo-docx(バージョン)」が表示された場合、「正常にライブラリをインストールできた」と判断できます。
 

Word文書のオブジェクト構造

Word文書は、以下のWordprocessingML(略称:WML)という言語で作成されます。
 

【WordprocessingMLとは】
Microsoftによって、Office Open XMLというファイルフォーマットが公開され、2006年と2008年に標準規格になりました。WordprocessingMLとは、Office Open XMLを簡単に記述できる言語のことを指します。
参照:Office Open XML ファイルフォーマットとは(Wikipedia)

 

先ほど紹介したWord関連のPythonライブラリでは、上記のWordprocessingMLに基づいてWord文書をPythonから操作します。そのため、WordprocessingMLでのオブジェクト構造を理解しておくことで、Pythonで細かいWord操作を簡単に実現できます。

以下の図に、WordprocessingMLのオブジェクト構造をまとめました。python-docxの公式サイトを確認することで、WordprocessingMLのオブジェクト構造を理解できます。

>> WordprocessingMLのオブジェクトについて(公式サイト)
 

wordのDOMに関するツリー図


 

以降で、python-docxとbayoo-docxを使いWord文書の新規作成を実践してみましょう。


 

PythonでWord文書を新規作成:10の事例


「PythonでWord文書を新規作成」に関してご紹介します。
 

【ご紹介事項】
・新規作成し保存:save関数
・見出しの作成:add_heading関数
・ヘッダーとフッターの作成
・段落を作成し文字の書き込み:add_paragraph関数
・改ページの実施:add_page_break関数
・フォントの指定
・リスト(箇条書き)の挿入
・画像の貼り付け:add_picture関数
・テーブル(表)の挿入:add_table関数
・コメント挿入:add_comment関数



以降で、上記の各項目に関して説明します。
 

新規作成し保存:save関数

「Wordを新規作成し保存する」プログラムは、以下となります。

import docx

# 新規作成
document = docx.Document()

# 保存
document.save('sample.docx')



上記のプログラムを「create-new-word.py」というファイル名で保存しましょう。
 

【saveの構文】
・機能
 指定したファイル名でWord文書を新規作成する
・使い方
 Document型の変数.save(ファイル名)
・補足
 doc拡張子なWord文書も新規作成できる
・参照
 save関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python create-new-word.py



コマンド実行後、以下のような何も書かれていないWord文書が新規作成されます。
 

空のWord文書


 

見出しの作成:add_heading関数

「見出しの作成」プログラムは、以下となります。

import docx

# 新規作成
document = docx.Document()

# 見出しの作成
document.add_heading('大見出し', 0)
document.add_heading('中見出し', 1)

# 保存
document.save('sample.docx')



上記のプログラムを「insert-head.py」というファイル名で保存しましょう。
 

【構文】
・機能
 指定した種類の見出しを追加する
・使い方
 Document型の変数.add_heading(“テキスト”, 見出しのレベル)
・補足
 見出しのレベルは0~9で指定、0にすると一番大きな見出しになる
・参照
 add_heading関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python insert-head.py



コマンド実行後、以下のような見出しが追加されたWord文書が新規作成されます。
 

追加されたwordの見出し


 

ヘッダーとフッターの作成

「ヘッダーとフッターの作成」プログラムは、以下となります。

import docx

# 新規作成
document = docx.Document()

# ヘッダーとフッター
section = document.sections[0]
header = section.header
paragraph = header.paragraphs[0]
paragraph.text = "ヘッダーです"

footer = section.footer
paragraph = footer.paragraphs[0]
paragraph.text = "フッターです"

# 保存
document.save('sample.docx')



上記のプログラムを「insert-footer-header.py」というファイル名で保存しましょう。
 

headerとfooterのオブジェクト場所について



以下のコマンドで、上記プログラムを実行できます。

python insert-footer-header.py



コマンド実行後、以下のようなフッターとヘッダーが追加されたWord文書が新規作成されます。
 

追加されたフッターとヘッダー


 

段落を作成し文字の書き込み:add_paragraph関数

「段落を作成し文字の書き込み」プログラムは、以下となります。

import docx

# 新規作成
document = docx.Document()

# 段落
p_first = document.add_paragraph('段落①\n')
p_first.add_run('段落①の文章です。')

# 保存
document.save('sample.docx')



上記のプログラムを「insert-paragraph.py」というファイル名で保存しましょう。
 

【構文】
・機能
 段落を新規追加し、段落内に指定したテキストを書き込む
・使い方
 Document型の変数.add_paragraph(“テキスト”)
・参照
 add_paragraph関数のリファレンス(公式サイト)

 

【構文】
・機能
 段落内に指定したテキストを追加する
・使い方
 Paragraph型の変数.add_run(“テキスト”)
・参照
 add_run関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python insert-paragraph.py



コマンド実行後、以下の段落が追加されたWord文書が新規作成されます。
 

追加された段落


 

改ページの実施:add_page_break関数

「改ページの実施」プログラムは、以下となります。

import docx

# 新規作成
document = docx.Document()

# 改ページ
document.add_page_break()

# 保存
document.save('sample.docx')



上記のプログラムを「insert-pagebreak.py」というファイル名で保存しましょう。
 

【構文】
・機能
 新しいページを追加する
・使い方
 Document型の変数.add_page_break()
・参照
 add_page_break関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python insert-pagebreak.py



コマンド実行後、以下のようにページが追加されたWord文書が新規作成されます。
 

ページ追加されたWord文書


 

フォントの指定

「フォントの指定」プログラムは、以下となります。

import docx
from docx.shared import Cm
from docx.oxml.ns import qn
from docx.shared import RGBColor

# 新規作成
document = docx.Document()

# 段落追加
paragraph = document.add_paragraph()
run = paragraph.add_run('フォント指定')

# フォントの指定
run.font.name = 'Meiryo UI'
run._element.rPr.rFonts.set(qn('w:eastAsia'), run.font.name)

# 色の設定
run.font.color.rgb = RGBColor(204, 0, 0)

# 下線の設定
run.underline = True

# サイズの設定
run.font.size = docx.shared.Pt(24)

# 保存
document.save('sample.docx')



上記のプログラムを「setting-font.py」というファイル名で保存しましょう。

Runオブジェクト内の変数やfontオブジェクトを設定することで、色や下線などのフォントに関係する設定ができます(下図参照)。

>> Runオブジェクトに関する仕様書(公式サイト)
 

Wordのフォント関連の設定



以下のコマンドで、上記プログラムを実行できます。

python setting-font.py



コマンド実行後、以下のように装飾された文字が書き込まれたWord文書が新規作成されます。
 

装飾されたフォント


 

リスト(箇条書き)の挿入

「リスト(箇条書き)の挿入」プログラムは、以下となります。

import docx
from docx.shared import Cm
from docx.oxml.ns import qn
from docx.shared import RGBColor

# 新規作成
document = docx.Document()

# リスト
document.add_paragraph("果物", style="List Bullet")
for item in ["りんご", "ミカン", "いちご"]:
    document.add_paragraph(item, style='List Bullet 2')
document.add_paragraph("ラーメン", style="List Number")
for item in ["豚骨", "しょうゆ", "味噌"]:
    document.add_paragraph(item, style='List Number 2')

# 保存
document.save('sample.docx')



上記のプログラムを「insert-list.py」というファイル名で保存しましょう。
 

【箇条書き】
add_paragraphの任意引数styleに「List Bullet」を指定することで実現できます。番号付き箇条書きを設定したい場合は「List Number」を指定します。
参照:styleに指定できるリスト関連の値(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python insert-list.py



コマンド実行後、以下のような箇条書きが記載されたWord文書が新規作成されます。
 

追加された箇条書き


 

画像の貼り付け:add_picture関数 

「画像の貼り付け」プログラムは、以下となります。

import docx
from docx.shared import Cm

# 新規作成
document = docx.Document()

# 画像
document.add_picture('image-sample.png', width=Cm(10))

# 保存
document.save('sample.docx')



上記のプログラムを「insert-image.py」というファイル名で保存しましょう。
 

【構文】
・機能
 指定した画像を挿入する
・使い方
 Document型の変数.add_picture(“画像ファイルのPATH”)
・補足
 任意引数としてwidthやheightがあり、画像の縦横を指定できる
・参照
 add_picture関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python insert-image.py



コマンド実行後、以下のように画像が挿入されたWord文書が新規作成されます。
 

画像の挿入


 

テーブル(表)の挿入:add_table関数

「テーブル(表)の挿入」プログラムは、以下となります。

import docx
from docx.shared import Cm

# 新規作成
document = docx.Document()

# テーブル設定
table = document.add_table(rows=2, cols=2, style="Table Grid")

# 表の1行目にデータを設定
head_row = table.rows[0].cells
head_row[0].text = "項番"
head_row[1].text = "名称"

# 表の2行目にデータを設定
data_row = table.rows[1].cells
data_row[0].text = "1"
data_row[1].text = "りんご"

# 保存
document.save('sample.docx')



上記のプログラムを「insert-table.py」というファイル名で保存しましょう。
 

【構文】
・機能
 指定したテーブルを挿入する
・使い方
 Document型の変数.add_table(rows=行数, cols=列数,
 style=”テーブルのスタイル”)
・補足
 指定できるテーブルのスタイルの一覧(公式サイト)
・参照
 add_table関数のリファレンス(公式サイト)



Tableオブジェクトの中にあるcellsオブジェクトのtext変数に値を設定することで、表のカラムにデータを挿入できます(下図参照)。

>> Tableオブジェクトに関する仕様書(公式サイト)
 

tableのオブジェクト構造



以下のコマンドで、上記プログラムを実行できます。

python insert-table.py



コマンド実行後、以下のような表が挿入されたWord文書が新規作成されます。
 

挿入されたテーブル


 

コメント挿入:add_comment関数

「コメント挿入」プログラムは、以下となります。

import docx

# 新規作成
document = docx.Document()

# コメント
p_second = document.add_paragraph('段落➁')
p_second.add_run('段落➁の文章です。')
run = p_second.add_run('コメント入り文です。')
run.add_comment('コメントです。', author='hero')

# 保存
document.save('sample.docx')



上記のプログラムを「insert-comment.py」というファイル名で保存しましょう。
 

【構文】
・機能
 コメントを挿入する
・使い方
 Run型の変数.add_comment(“テキスト”, author=’コメント記入者名’)
 Paragraph型の変数.add_comment(“テキスト”, author=’コメント記入者名’)
・補足
 python-docxではコメント機能はないため、bayoo-docxを使う
・参照
 add_comment関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python insert-comment.py



コマンド実行後、以下のようなコメントが挿入されたWord文書が新規作成されます。
 

挿入されたコメント


 

上記のようにpython-docxとbayoo-docxを使うことで、様々なパターンのWord文書をPythonで新規作成できます。



Pythonを使うことで、Word文書の新規作成操作を自動化できることを説明しました。このPythonを使うことで、あらゆる業務や作業を自動化できます。
その事例やヒントを知りたい方には、以下の本がオススメです。

 



ちなみに、上記教材の詳細なレビューに関しては、以下のサイトにまとめています。

>> 退屈なことはPythonにやらせように関するレビューの一覧


 

【まとめ】2つのライブラリで簡単にWordの新規作成が可能


いかがでしたでしょうか?

上記で紹介したpython-docxとbayoo-docxライブラリを使うことで、PythonからWord文書の新規作成ができます。

最後にもう一度内容を確認しましょう。
 

【おさらい】
・PythonのWord向けのライブラリとして3つのライブラリがある
・python-docxでWordの新規作成の操作をPythonで実現できる
・コメント挿入をしたい場合はbayoo-docxを使うことで実現できる



ちなみに、「編集」「変換」「抽出」といった操作もPythonで実施できます。以下の記事にまとめているので興味がある方は是非ご覧ください。



本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。

>> IT技術やその学び方を発信しているサイト「駆け出し物語」(本ブログ)
 

コメント

タイトルとURLをコピーしました