この記事では、PythonでMicrosoft Wordファイル(.docx)を操作するためのライブラリpython-docxについて解説します。このライブラリを使えば、Word文書のテキスト読み込み、新規作成、段落や見出し、画像の追加、さらにはスタイルの適用といった作業を自動化できます。
1. 準備:python-docxのインストール
python-docxはサードパーティ製のライブラリなので、使用する前にインストールが必要です。
pip install python-docx
2. Word文書の読み込み
docx.Document()にファイルパスを渡すことで、既存のWord文書を開き、Documentオブジェクトとして読み込むことができます。
ParagraphオブジェクトとRunオブジェクト Documentオブジェクトは、paragraphs属性にParagraphオブジェクトのリストを持っています。一つのParagraphは、文書内の一つの段落に相当します。
さらに、各Paragraphオブジェクトは、runs属性にRunオブジェクトのリストを持っています。Runは、同じスタイルを持つテキストの連続したかたまりです。例えば、「これは太字のテキストです」という段落は、3つのRun(「これは」、太字の「太字」、のテキストです」)に分かれます。
import docx
# 'sample.docx'というファイルがあると仮定
try:
doc = docx.Document('sample.docx')
print(f"段落数: {len(doc.paragraphs)}")
# 最初の段落のテキストを取得
print(f"最初の段落: {doc.paragraphs[0].text}")
# 2番目の段落のテキストと、その中のRunを取得
second_para = doc.paragraphs[1]
print(f"2番目の段落のRunの数: {len(second_para.runs)}")
for run in second_para.runs:
print(f" Runのテキスト: {run.text}")
except Exception as e:
print(f"ファイルの読み込み中にエラーが発生しました: {e}")
文書からすべてのテキストを抽出する 文書全体のテキストを取得するには、すべての段落をループして、そのテキストを結合します。
def get_text_from_docx(filename):
doc = docx.Document(filename)
full_text = []
for para in doc.paragraphs:
full_text.append(para.text)
return '\n'.join(full_text)
# all_text = get_text_from_docx('sample.docx')
# print(all_text)
3. Word文書の作成と書き込み
docx.Document()を引数なしで呼び出すと、新しい空のDocumentオブジェクトが作成されます。
段落と見出しを追加する doc.add_paragraph()で新しい段落を、doc.add_heading()で様々なレベルの見出しを追加できます。
import docx
doc = docx.Document()
# 見出しを追加 (level=0はタイトル)
doc.add_heading('文書のタイトル', level=0)
# 段落を追加
doc.add_paragraph('これは最初の段落です。')
# 段落オブジェクトを保持して、後からテキスト(Run)を追加
para = doc.add_paragraph('これは2番目の段落の一部です。')
para.add_run(' そしてこれは同じ段落に追加されたテキストです。')
# 見出しレベル1を追加
doc.add_heading('セクション1', level=1)
doc.add_paragraph('これはセクション1の内容です。')
doc.save('created_document.docx')
画像と改ページを追加する doc.add_picture()で画像を、doc.add_page_break()で改ページを挿入できます。画像のサイズを指定するにはdocx.sharedモジュールが必要です。
from docx.shared import Inches
# doc.add_picture('my_image.png', width=Inches(2.5))
# doc.add_page_break()
4. スタイルの適用
テキストにスタイルを適用するには、主にRunオブジェクトの属性を変更する方法と、Paragraphオブジェクトに定義済みのスタイルを適用する方法があります。
import docx
doc = docx.Document()
# 段落にスタイルを適用
p1 = doc.add_paragraph('これは引用スタイルの段落です。')
p1.style = 'Quote'
# Runにスタイルを適用
p2 = doc.add_paragraph('通常のテキストと、')
run1 = p2.add_run('太字のテキスト')
run1.bold = True
p2.add_run('と、')
run2 = p2.add_run('イタリック体のテキスト')
run2.italic = True
p2.add_run('。')
doc.save('styled_text.docx')
まとめ
python-docxライブラリは、Word文書の読み書きを自動化するための包括的な機能を提供します。docx.Document()でファイルを開くか新規作成し、add_paragraph()やadd_heading()などのメソッドで内容を追加し、ParagraphやRunオブジェクトの属性を操作してスタイルを設定し、最後にsave()でファイルに保存するのが基本的な流れです。これにより、レポートの自動生成や文書の一括処理などが可能になります。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
