Word 形式(.docx)で作成された議事録や報告書を Excel へ変換すると、検索や集計が容易になります。本稿では python‑docx と openpyxl を用い、段落・見出し・表をそれぞれ抽出してワークブックへ保存する三つの方法を順にご紹介いたします。コード中の変数名とファイル名は例示用に変更しておりますので、そのままご利用いただいても著作権面の問題が生じにくい構成となっております。
目次
1. 準備 ― ライブラリのインストール
pip install python-docx openpyxl
両ライブラリとも企業利用の事例が多く、Python 公式パッケージインデックスから簡単に導入できます。
2. すべての段落を縦一列に書き出す
from docx import Document
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Paragraphs"
doc = Document("report.docx")
for idx, paragraph in enumerate(doc.paragraphs, start=1):
ws.cell(row=idx, column=1, value=paragraph.text)
wb.save("report_paragraphs.xlsx")
- ファイル名を report.docx / report_paragraphs.xlsx に変更しております。
enumerate(..., start=1)
とすることで Excel の行番号と合わせやすくしています。
3. 見出しレベル 1 だけを抽出して書き出す
from docx import Document
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Headings"
doc = Document("report.docx")
heading_style = "Heading 1" # Word 標準のスタイル名
row_counter = 0
for para in doc.paragraphs:
if para.style.name == heading_style:
row_counter += 1
ws.cell(row=row_counter, column=1, value=para.text)
wb.save("report_headings.xlsx")
大見出しのみを一覧化することで、章立てやアウトラインを迅速に確認できます。
4. Word の表をそのまま Excel シートへ転記
from docx import Document
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Tables"
ws.column_dimensions["A"].width = 40
ws.column_dimensions["B"].width = 18
ws.column_dimensions["C"].width = 18
doc = Document("inspection_list.docx")
for tbl in doc.tables:
for row in tbl.rows:
values = [cell.text for cell in row.cells]
ws.append(values)
wb.save("inspection_tables.xlsx")
- 列幅を事前に調整し、文字列の折り返しを防いでおります。
inspection_list.docx
というファイル名に変更し、実務ファイルとの重複を避けています。
まとめ
- python‑docx を使って段落・見出し・表を抽出
- openpyxl でセル操作し、列幅やシート名を自由に設定
- 形式統一により検索・集計・共有が容易に
Word 文書から Excel へデータを移す煩雑な手作業は、数十行のスクリプトで自動化可能です。ご紹介した三つのパターンを基に、行列の位置や書式設定をカスタマイズし、貴社の業務フローに合わせてご活用ください。