Pythonのpython-docxモジュールでWord文書を操作する方法
Word文書は、3つのオブジェクト階層で構成された書式付きテキストを含んでいます。最下層が「Run」オブジェクト、中間層が「Paragraph(段落)」オブジェクト、そして最上位層が「Document(文書)」オブジェクトです。
そのため、通常のテキストエディタではこれらのWord文書を扱うことができません。しかし、Pythonのpython-docxモジュールを使えば、プログラムから自由にWord文書を作成・編集できます。
python-docxの導入手順
- まず、サードパーティ製モジュールであるpython-docxをインストールします。pipコマンドで「
pip install python-docx」を実行してください。 - インストール後、インポートする際は「
docx」と指定します。「python-docx」ではないので注意しましょう。 - 「
docx.Document」クラスを使用して、Word文書の操作を開始します。
実装例
以下のコードでは、見出しや段落の追加、太字・斜体などの文字スタイルの適用、改ページ、画像の挿入、文書の保存まで、一連の基本的な操作をまとめています。
# python-docx ではなく docx をインポート
import docx
# Word文書のインスタンスを作成
doc = docx.Document()
# レベル0(最大サイズ)の見出しを追加
doc.add_heading('Heading for the document', 0)
# 段落を追加し、オブジェクトを変数に格納
doc_para = doc.add_paragraph('Your paragraph goes here, ')
# Runを追加してスタイルを適用
# (太字、斜体、下線など)
doc_para.add_run('hey there, bold here').bold = True
doc_para.add_run(', and ')
doc_para.add_run('these words are italic').italic = True
# 改ページを挿入して新しいページを開始
doc.add_page_break()
# レベル2の見出しを追加
doc.add_heading('Heading level 2', 2)
# Word文書には画像も挿入可能
# width引数は省略可能
doc.add_picture('path_to_picture')
# 文書を指定した場所に保存
doc.save('path_to_document')主なポイントの解説
オブジェクト階層について
python-docxにおける「Run」とは、同じ書式を持つ連続したテキストのまとまりを指します。1つの段落の中に複数のRunが存在でき、それぞれに対して個別に太字や斜体などのスタイルを設定できます。段落全体に書式を適用したい場合はParagraphオブジェクト、文書全体の構造を管理したい場合はDocumentオブジェクトを操作します。
画像挿入時の注意点
add_picture()メソッドでは、width引数にdocx.shared.Inchesやdocx.shared.Cmなどを指定することで、画像の表示サイズを調整できます。指定しない場合は元の画像サイズのまま挿入されます。
保存形式について
save()メソッドで保存する際は、拡張子を「.docx」としてください。古い「.doc」形式には対応していないため、注意が必要です。
-
PythonでPDFを操作しよう!PyPDF2ライブラリの使い方を徹底解説
Pythonは多彩なライブラリを備えた非常に汎用性の高いプログラミング言語です。日常業務でよく扱うPDF(Portable Document Format)ファイルについても、Pythonにはさまざまな操作手段が用意されています。本記事では、その中でも「PyPDF2」というライブラリを使ってPDFファイルを操作する方法を解説します。 PyPDF2は純粋なPythonで実装されたPDFライブラリで、PDFページの分割・結合・切り抜き・変換が可能です。さらに、カスタムデータや表示オプション、パスワードの追加、テキストやメタデータの取得、ファイル全体のマージといった機能も備えています。 PyPDF
-
Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説
Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される