. Python Wordファイルを作成する方法
Python Wordファイルを作成する方法
Python Wordファイルを作成する方法

[Python] Wordファイルを作成する方法

PythonでWordファイルを作成するには、 python-docx ライブラリを使用します。 このライブラリは、Word文書の作成、編集、保存を簡単に行うための機能を提供します。 まず、 Document クラスをインスタンス化して新しい文書を作成します。 次に、 add_paragraph メソッドを使用して段落を追加したり、 add_heading メソッドで見出しを追加することができます。 最後に、 save メソッドを使用してファイルを保存します。 この方法を使えば、プログラムから自動的にWord文書を生成することが可能です。

PythonでWordファイルを作成する方法

必要なライブラリの紹介

ここでは、最も一般的に使用されるライブラリである python-docx について紹介します。

python-docxとは

python-docx は、Pythonを使用してMicrosoft Wordの.docxファイルを操作するためのライブラリです。

  • 新しいWordファイルの作成
  • 既存のWordファイルの読み込みと編集
  • テキストや画像の追加
  • 表や段落の操作
  • フォントやスタイルの設定
インストール方法

インストールは、Pythonのパッケージ管理ツールである pip を使用して簡単に行うことができます。

pip install python-docx

このコマンドを実行することで、 python-docx ライブラリがインストールされ、Pythonスクリプト内で使用できるようになります。

import docx

これで、 python-docx を使用してWordファイルを操作する準備が整いました。

Wordファイルの基本操作

新しいWordファイルの作成

新しいWordファイルを作成するには、 python-docx ライブラリの Documentクラス を使用します。

import docx # 新しいWordドキュメントを作成 doc = docx.Document() # ドキュメントに段落を追加 doc.add_paragraph("これは新しいWordファイルです。") # ファイルを保存 doc.save("new_document.docx")

このコードを実行すると、カレントディレクトリに new_document.docx という名前のWordファイルが作成されます。

既存のWordファイルの読み込み import docx # 既存のWordドキュメントを読み込む doc = docx.Document("existing_document.docx") # ドキュメント内のすべての段落を表示 for paragraph in doc.paragraphs: print(paragraph.text)

このコードを実行すると、指定した existing_document.docx ファイル内のすべての段落がコンソールに表示されます。

テキストの追加

段落の追加 import docx # 新しいWordドキュメントを作成 doc = docx.Document() # 段落を追加 doc.add_paragraph("これは最初の段落です。") doc.add_paragraph("これは2番目の段落です。") # ファイルを保存 doc.save("paragraphs_document.docx")

このコードを実行すると、 paragraphs_document.docx という名前のWordファイルが作成され、指定した2つの段落が含まれます。

フォントスタイルの設定 import docx from docx.shared import Pt # 新しいWordドキュメントを作成 doc = docx.Document() # 段落を追加し、フォントスタイルを設定 paragraph = doc.add_paragraph("これはスタイル付きの段落です。") run = paragraph.runs[0] run.font.size = Pt(14) # フォントサイズを14ポイントに設定 run.bold = True # 太字に設定 run.italic = True # 斜体に設定 # ファイルを保存 doc.save("styled_paragraph_document.docx")

このコードを実行すると、 styled_paragraph_document.docx という名前のWordファイルが作成され、指定したスタイルが適用された段落が含まれます。

画像の挿入

画像ファイルの読み込み

python-docx を使用してWordドキュメントに画像を挿入するには、 add_pictureメソッド を使用します。

import docx # 新しいWordドキュメントを作成 doc = docx.Document() # 画像を挿入 doc.add_picture("example_image.png") # ファイルを保存 doc.save("image_document.docx")

このコードを実行すると、 image_document.docx という名前のWordファイルが作成され、指定した example_image.png 画像がドキュメントに挿入されます。

画像の配置とサイズ調整 import docx from docx.shared import Inches # 新しいWordドキュメントを作成 doc = docx.Document() # 画像を挿入し、幅を指定してサイズを調整 doc.add_picture("example_image.png", width=Inches(2)) # ファイルを保存 doc.save("resized_image_document.docx")

このコードを実行すると、 resized_image_document.docx という名前のWordファイルが作成され、幅が2インチに調整された画像が挿入されます。

表の作成

表の追加方法

python-docx を使用してWordドキュメントに表を追加するには、 add_tableメソッド を使用します。

import docx # 新しいWordドキュメントを作成 doc = docx.Document() # 3行3列の表を追加 table = doc.add_table(rows=3, cols=3) # 各セルにデータを入力 for row in range(3): for col in range(3): cell = table.cell(row, col) cell.text = f"セル -" # ファイルを保存 doc.save("table_document.docx")

このコードを実行すると、 table_document.docx という名前のWordファイルが作成され、3行3列の表が挿入されます。

セルの編集とスタイル設定 import docx from docx.oxml import parse_xml from docx.oxml.ns import nsdecls # 新しいWordドキュメントを作成 doc = docx.Document() # 2行2列の表を追加 table = doc.add_table(rows=2, cols=2) # 各セルにデータを入力し、背景色を設定 for row in range(2): for col in range(2): cell = table.cell(row, col) cell.text = f"データ -" # 背景色を設定 cell._element.get_or_add_tcPr().append(parse_xml(r' w:fill="FFFF00"/>'.format(nsdecls('w')))) # ファイルを保存 doc.save("styled_table_document.docx")

このコードを実行すると、 styled_table_document.docx という名前のWordファイルが作成され、背景色が黄色に設定された2行2列の表が挿入されます。

ヘッダーとフッターの設定

ヘッダーの追加

python-docx を使用してWordドキュメントにヘッダーを追加するには、 sections プロパティを使用してドキュメントのセクションを取得し、 header プロパティを操作します。

import docx # 新しいWordドキュメントを作成 doc = docx.Document() # ドキュメントの最初のセクションを取得 section = doc.sections[0] # ヘッダーにテキストを追加 header = section.header header_paragraph = header.paragraphs[0] header_paragraph.text = "これはヘッダーのテキストです。" # ファイルを保存 doc.save("header_document.docx")

このコードを実行すると、 header_document.docx という名前のWordファイルが作成され、すべてのページに「これはヘッダーのテキストです。」というテキストが表示されます。

フッターの追加 import docx # 新しいWordドキュメントを作成 doc = docx.Document() # ドキュメントの最初のセクションを取得 section = doc.sections[0] # フッターにテキストを追加 footer = section.footer footer_paragraph = footer.paragraphs[0] footer_paragraph.text = "これはフッターのテキストです。" # ファイルを保存 doc.save("footer_document.docx")

このコードを実行すると、 footer_document.docx という名前のWordファイルが作成され、すべてのページに「これはフッターのテキストです。」というテキストが表示されます。

応用例

複数ページのドキュメント作成 import docx # 新しいWordドキュメントを作成 doc = docx.Document() # 最初のページに段落を追加 doc.add_paragraph("これは最初のページです。") # ページブレークを挿入 doc.add_page_break() # 2ページ目に段落を追加 doc.add_paragraph("これは2ページ目です。") # ファイルを保存 doc.save("multi_page_document.docx")

このコードを実行すると、 multi_page_document.docx という名前のWordファイルが作成され、2ページにわたるドキュメントが生成されます。

自動レポート生成 import docx # 新しいWordドキュメントを作成 doc = docx.Document() # データを定義 data = [ ["項目", "値"], ["売上", "100万円"], ["利益", "20万円"] ] # 表を追加 table = doc.add_table(rows=1, cols=2) hdr_cells = table.rows[0].cells hdr_cells[0].text = data[0][0] hdr_cells[1].text = data[0][1] # データを表に追加 for item, value in data[1:]: row_cells = table.add_row().cells row_cells[0].text = item row_cells[1].text = value # ファイルを保存 doc.save("report_document.docx")

このコードを実行すると、 report_document.docx という名前のWordファイルが作成され、データが表形式でレポートとして出力されます。

テンプレートを使用したドキュメント作成 import docx # テンプレートを読み込む doc = docx.Document("template_document.docx") # テンプレートの内容を編集 doc.add_paragraph("テンプレートに新しい内容を追加します。") # ファイルを保存 doc.save("customized_document.docx")

このコードを実行すると、 customized_document.docx という名前のWordファイルが作成され、テンプレートに新しい内容が追加されます。

まとめ

URLをコピー URLをコピーしました 2025-04-14 更新日: 2025-04-14 関連記事 python-pptxライブラリの使い方 – PowerPointを操作する [Python] “import openpyxl”がエラーになる原因と対処法 [Python] import docxがエラーになる原因と対処法 [Python] エクセルファイルを読み込めない原因と対処法 [Python] Pandasでエクセルファイルを読み込む方法 [Python] エクセルファイルを読み込んでデータを処理する方法【Pandas/Numpy/openpyxl】 [Python] openpyxlでデータをエクセルファイルに出力する方法 [Python] openpyxlで列を指定してセルを取得する方法 [Python] openpyxlでエクセルの日付セルから日時を取得する方法 [Python] openpyxlでエクセルのセルの色を取得・変更する方法
  • データベース (9)
  • Microsoft Office (28)
  • NumPy (52)
  • Google (21)
  • Pandas (54)
📎📎📎📎📎📎📎📎📎📎