
Word文書には、売上記録や経費明細など、Excelで集計・分析したい表が含まれていることがあります。こうしたデータを手作業でコピーすると時間がかかり、表の配置を整え直す必要もあります。Pythonを使えば、Word文書をExcel(XLSX)形式に直接変換でき、繰り返し作業を減らせます。
Spire.Doc for Pythonを使用すると、DOC/DOCX文書全体の変換だけでなく、表のみの書き出しや指定ページの変換、複数ファイルの一括処理も可能です。Microsoft WordやExcelをインストールする必要はありません。
この記事では、用途に応じた4つの変換方法をPythonのコード例とともに紹介します。
目次
Spire.Doc for Pythonのインストール
まず、pipを使用してPyPIからパッケージをインストールします。
pip install Spire.Doc
注意: WordからExcelへの直接変換は、Spire.Doc for Python 14.4.2以降でサポートされています。古いバージョンをインストールしている場合は、次のコマンドで更新してください。
pip install --upgrade Spire.Doc
PythonでWord文書全体をExcelに変換する
DOCまたはDOCXファイルをExcelに変換するには、Document.LoadFromFile()でWord文書を読み込み、Document.SaveToFile()の保存形式にFileFormat.XLSXを指定します。Excelブックを別途作成したり、セルの内容を一つずつコピーしたりする必要はありません。
from spire.doc import Document, FileFormat
# Documentオブジェクトを作成する
doc = Document()
try:
# Word文書を読み込む
doc.LoadFromFile("請求書.docx")
# Excel形式に変換して保存する
doc.SaveToFile("請求書.xlsx", FileFormat.XLSX)
finally:
# リソースを解放する
doc.Close()

実行すると、Word文書の内容を含む請求書.xlsxが作成されます。
Word文書をExcelに変換した場合の表示と注意点
WordとExcelではファイルの構造が異なるため、変換結果は元の文書の内容やレイアウトによって変わります。
- 表: Wordの表にあるセルは、元の行と列の関係に沿ってExcelのセルに変換されます。複雑なセル結合や特殊な書式は、変換後に確認・調整が必要になる場合があります。
- 段落: 表の外にある文章も出力できますが、必ずしもExcel上で整った表形式になるわけではありません。
- セクション: 既定では、Word文書の各セクションが別々のExcelワークシートに出力されます。同じセクションに複数の表があれば、それらは通常、同じワークシートに配置されます。なお、Wordのセクションはページとは異なり、1つのセクションに複数ページが含まれることもあります。
- 複雑なレイアウト: 浮動オブジェクトや段組みなど、Word特有の配置やページ設定は完全には再現されない場合があります。
- データ型: Word文書内で文字列として扱われていた数値や日付は、Excelでも文字列として保存される場合があります。計算や集計に使用するには、Excelで数値や日付として認識されるデータに変換する必要があります。
この方法は、表形式のデータを含むWord文書に適しています。一方、ページ全体の見た目を忠実に再現したい場合、Excelへの変換が最適とは限りません。
Word文書内の表だけをExcelに変換する
報告書には、表のほかに見出しや本文、補足説明が含まれていることがあります。表だけをExcelに出力したい場合は、元の文書から表を新しいWord文書にコピーし、その文書をXLSX形式に変換します。これにより、表以外の文章を出力対象から除外できます。
次の例では、すべてのセクションにある表を取得し、1つの表につき1つのExcelワークシートに書き出します。
from spire.doc import Document, FileFormat
# 元の文書と、表を格納する新しい文書を作成する
doc = Document()
table_doc = Document()
try:
# 元のWord文書を読み込む
doc.LoadFromFile("四半期業績報告書.docx")
table_count = 0
# すべてのセクションから表を取得する
for i in range(doc.Sections.Count):
section = doc.Sections.get_Item(i)
for j in range(section.Tables.Count):
table = section.Tables.get_Item(j)
# 表のコピーを新しいセクションに追加する
new_section = table_doc.AddSection()
new_section.Tables.Add(table.Clone())
table_count += 1
# 表が存在する場合のみExcelに変換する
if table_count > 0:
table_doc.SaveToFile("業績報告書の表.xlsx", FileFormat.XLSX)
else:
print("Word文書に表が見つかりませんでした。")
finally:
# 両方の文書のリソースを解放する
table_doc.Close()
doc.Close()
Section.Tablesは各セクションの表を取得するためのコレクションで、Table.Clone()は元の文書を変更せずに表のコピーを作成します。続いてAddSection()で表ごとに独立したセクションを設けます。Wordのセクションは変換時にExcelのワークシートに対応するため、この構成により各表を別々のシートに保存できます。

Word文書の指定ページをExcelに変換する
複数ページにわたるWordの報告書から、集計表が載っているページだけをExcelに変換したい場合もあります。そのようなときは、Document.ExtractPages()で目的のページを新しい文書として取り出し、XLSX形式で保存します。
以下では、Word文書の2ページ目を抽出してExcelに変換します。
from spire.doc import Document, FileFormat
# Documentオブジェクトを作成する
doc = Document()
page_doc = None
try:
# 複数ページのWord文書を読み込む
doc.LoadFromFile("複数ページの報告書.docx")
# 2ページ目を抽出する(ページインデックスは0から始まる)
page_doc = doc.ExtractPages(1, 1)
# 抽出したページをExcel形式で保存する
page_doc.SaveToFile("2ページ目.xlsx", FileFormat.XLSX)
finally:
# リソースを解放する
if page_doc is not None:
page_doc.Close()
doc.Close()
Document.ExtractPages()の第1引数には抽出を開始するページのインデックス、第2引数には抽出するページ数を指定します。インデックスは0から始まるため、ExtractPages(1, 1)は2ページ目を1ページ分抽出する指定です。抽出した文書は2ページ目.xlsxとして保存されます。
注意: Word文書の改ページ位置は、フォントや余白などのレイアウト設定によって変わる場合があります。そのため、プログラムが抽出した内容とMicrosoft Word上で表示されるページ範囲が完全に一致しないこともあります。想定した内容が得られない場合は、ページインデックスに加え、実行環境のフォントや文書のページ設定も確認してください。
複数のWordファイルをExcelに一括変換する
毎月作成される報告書など、複数のWordファイルをまとめてExcelに変換したい場合は、Pythonのpathlibを使って処理を自動化できます。
次のスクリプトでは、指定したフォルダー内の.docと.docxファイルを順番に読み込み、それぞれを同名の.xlsxファイルとして保存します。変換できないファイルがあっても、エラーを表示して残りのファイルの処理を続行します。
実行前に、プログラムの作業ディレクトリにWordFilesフォルダーを作成し、変換対象のファイルを入れてください。
from pathlib import Path
from spire.doc import Document, FileFormat
input_folder = Path("WordFiles")
output_folder = Path("ExcelFiles")
output_folder.mkdir(parents=True, exist_ok=True)
for file in input_folder.iterdir():
# Wordファイルだけを処理し、一時ファイルは除外する
if not file.is_file() or file.suffix.lower() not in (".doc", ".docx"):
continue
if file.name.startswith("~$"):
continue
doc = Document()
try:
# Wordファイルを読み込み、Excelに変換する
doc.LoadFromFile(str(file))
output_file = output_folder / f"{file.stem}.xlsx"
doc.SaveToFile(str(output_file), FileFormat.XLSX)
except Exception as e:
print(f"{file.name} の変換に失敗しました: {e}")
finally:
# ファイルごとにリソースを解放する
doc.Close()
例えば、WordFilesフォルダーに次のファイルがあるとします。
WordFiles/
1月売上報告書.docx
2月売上報告書.docx
3月売上報告書.doc
スクリプトを実行すると、ExcelFilesフォルダーに以下のファイルが作成されます。
ExcelFiles/
1月売上報告書.xlsx
2月売上報告書.xlsx
3月売上報告書.xlsx
注意: このスクリプトが処理するのはWordFiles直下のファイルのみで、サブフォルダー内は対象になりません。また、~$で始まるWordの一時ファイルはスキップします。売上報告書.docと売上報告書.docxのように拡張子だけが異なるファイルが同じフォルダーにある場合、出力先はどちらも売上報告書.xlsxとなり、後から処理した結果で上書きされる可能性があります。必要に応じて、元ファイル名を区別するか、出力名の付け方を変更してください。
よくある質問(FAQ)
DOCとDOCXのどちらもExcelに変換できますか?
はい。Spire.Doc for PythonのDocument.LoadFromFile()は、DOCとDOCXの両形式を読み込めます。読み込んだ文書は、Document.SaveToFile()でFileFormat.XLSXを指定するとExcelブックとして保存できます。
Microsoft WordやExcelのインストールは必要ですか?
いいえ。変換処理はSpire.Doc for Pythonによって実行されるため、スクリプトを動かすコンピューターにMicrosoft Officeをインストールする必要はありません。
変換後のExcelファイルを編集することはできますか?
はい。生成されたXLSXファイルはExcelで開いて編集できます。また、Pythonで列幅の調整、セルの書式設定、数式の追加などを自動化したい場合は、Spire.XLS for Pythonを使用できます。
まとめ
本記事では、Spire.Doc for Pythonを使用してWord文書をExcelに変換する方法を紹介しました。文書全体の変換に加え、表のみの変換、指定ページの変換、複数ファイルの一括変換など、さまざまな用途に応じた方法を取り上げています。
また、Spire.Doc for PythonはWord文書からPDF、HTML、画像への変換にも対応しています。目的に合わせて適切な出力形式を選択できます。
無料の一時ライセンスを取得する
評価版の制限を受けずに変換機能を試したい場合は、30日間有効な無料の一時ライセンスについて、お問い合わせページからご相談ください。






