
Word 文档中往往包含销售记录、费用明细等表格,用户可能希望在 Excel 中对这些数据进行汇总和分析。如果手动复制这些数据,不仅耗时,还需要重新调整表格布局。利用 Python,您可以将 Word 文档直接转换为 Excel (XLSX) 格式,从而减少重复性工作。
借助 Spire.Doc for Python,不仅可以将整个 DOC 或 DOCX 文档转换为 Excel,还能实现仅导出表格、转换指定页面以及批量处理多个 Word 文件。本文将结合实际代码示例,介绍这几种 Word 转 Excel 的方法。
目录
- 使用 Python 将整个 Word 文档转换为 Excel
- 使用 Python 将 Word 表格单独转换为 Excel
- 使用 Python 将 Word 指定页面转换为 Excel
- 使用 Python 批量将 Word 文档转换为 Excel
安装 Spire.Doc for Python
首先,请使用以下 pip 命令从 PyPI 安装 Spire.Doc for Python:
pip install Spire.Doc
注意: Spire.Doc for Python 14.4.2 及更高版本支持将 Word 直接转换为 Excel。如果您安装的是旧版本,请使用以下命令进行更新:
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")
# 将 Word 文档转换为 Excel
doc.SaveToFile("销售发票.xlsx", FileFormat.XLSX)
finally:
# 释放资源
doc.Close()

运行代码后,将生成 销售发票.xlsx 文件,其中包含从 Word 文档转换而来的内容。
Word 文档中的内容在 Excel 中如何呈现?
由于 Word 和 Excel 的用途及文件结构不同,转换后的效果可能因原文档的内容和排版而有所差异,主要体现在以下几个方面:
- 表格: Word 表格中的单元格会按照原有的行列关系转换为 Excel 单元格。如果表格包含复杂的合并单元格或特殊格式,转换后可能需要进一步检查或调整。
- 普通段落: 表格之外的文本也可以导出,但不一定会形成规则的电子表格结构。
- 节: Word 文档可以通过分节符划分为多个节,一个节可能包含一页或多页。转换时,默认会将每个节的内容保存到独立的 Excel 工作表中。如果同一节包含多个表格,这些表格通常会出现在同一个工作表中。
- 复杂排版: 浮动对象、分栏布局及部分页面格式可能无法在 Excel 中完整保留。
- 数据类型: Word 中以文本形式保存的数字或日期,转换后可能仍是文本。若需要使用这些数据进行计算或分析,可能需要进一步将其转换为 Excel 可识别的数字或日期格式。
总体而言,这种方法更适合以表格数据为主的 Word 文档。对于复杂文档,如果希望完整保留页面布局和视觉效果,Excel 则不一定是合适的输出格式。
使用 Python 将 Word 表格单独转换为 Excel
Word 报告中除了表格,通常还包含标题、正文或说明文字。如果只需要将表格转换为 Excel,可以先把原文档中的表格复制到一个新的 Word 文档,再将新文档保存为 XLSX 文件,这样就可以排除原文档中不需要的文字内容。
下面的示例会遍历 Word 文档中的所有节,提取其中的表格,并将每张表格分别转换为一个独立的 Excel 工作表。
from spire.doc import Document, FileFormat
# 创建原 Word 文档和用于存放表格的新文档
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 用于获取 Word 文档各节中的表格,Table.Clone() 用于创建表格副本,不会修改原文档。由于转换时每个 Word 节对应一个 Excel 工作表,因此只需将每张表格的副本放入新文档的独立节中,即可将不同的表格分别保存到不同的 Excel 工作表中。

这种方法不仅能获取表格中的文字,还能复制表格的结构。如果只需要读取单元格中的数据,以便在 Python 中进一步分析或处理,可以参考如何使用 Python 提取 Word 文档中的表格。
使用 Python 将 Word 指定页面转换为 Excel
有时,您可能希望从包含多页内容的 Word 报告中,仅将含有汇总表的页面转换为 Excel 文件。在这种情况下,可以使用 Document.ExtractPages() 将目标页面提取为新文档,并将其保存为 Excel 格式。
以下示例演示了如何从一个多页 Word 文档中提取第 2 页,并将其转换为 XLSX 文件。
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("第二页.xlsx", FileFormat.XLSX)
finally:
# 释放资源
if page_doc is not None:
page_doc.Close()
doc.Close()
Document.ExtractPages() 的两个参数分别表示起始页面索引和要提取的页数。由于页面索引从 0 开始,因此 ExtractPages(1, 1) 表示提取第 2 页。提取出的内容随后通过 SaveToFile() 转换为 Excel,并保存为 第二页.xlsx。
注意: Word 文档的分页可能受到字体、页边距等排版因素的影响,因此程序提取的内容可能与 Microsoft Word 中显示的页面范围略有差异。如果提取结果不符合预期,请先确认页面索引是否正确,并检查运行环境中的字体及文档排版设置。
使用 Python 批量将 Word 文档转换为 Excel
如果需要一次转换多个 Word 文档,可以使用 Python 自动完成批量转换。
下面的示例遍历指定文件夹中的 .doc 和 .docx 文件,将每个 Word 文档分别转换为 XLSX 文件。如果某个文件转换失败,程序会输出错误信息,并继续处理其他文件。运行前,请在程序的当前工作目录下创建 WordFiles 文件夹,并将需要转换的 Word 文档放入其中。
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,后转换的文件可能覆盖之前生成的结果。建议提前区分文件名,或根据需要调整输出文件的命名方式。
常见问题解答(FAQs)
1. 能否将 DOC 和 DOCX 都转换为 Excel?
可以。Spire.Doc for Python 的 Document.LoadFromFile() 支持加载 DOC 和 DOCX 文件,随后可调用 Document.SaveToFile(),并指定 FileFormat.XLSX 格式,将其转换为 Excel 工作簿。
2. 转换时需要安装 Microsoft Word 或 Excel 吗?
不需要。Spire.Doc for Python 可以独立完成 Word 转 Excel 的操作,无需在运行 Python 脚本的计算机上安装 Microsoft Office。
3. 转换后还能编辑 Excel 文件吗?
可以。如果需要调整列宽、设置单元格格式或添加公式,可以使用 Spire.XLS for Python 打开生成的 XLSX 文件并继续编辑。Spire.Doc 用于完成格式转换,Spire.XLS 则可以进一步编辑生成的 Excel 文件。
总结
本文介绍了如何使用 Python 和 Spire.Doc for Python 将 Word 文档转换为 Excel,涵盖完整文档转换、指定页面转换、表格转换以及批量处理等常见场景。
此外,Spire.Doc for Python 还支持将 Word 文档转换为 PDF、HTML 或图片等格式,可根据实际需求选择合适的输出格式。
获取免费临时 License
如需在不受试用版限制的情况下测试转换功能,可以获取有效期 30 天的临时许可证。







