Word 文档承载了丰富的版式信息:字体、颜色、表格、图片、页眉页脚,适合作为最终交付的成品;但它也因此在很多自动化场景里显得"太重"。纯文本文件(.txt)则是另一种极端------它剥离了所有样式,只保留一行行文字,却正因为简单而能被任何程序读写、能直接进日志系统、能喂给自然语言处理脚本。把 Word 和 TXT 互相打通,往往就是连接"人写的精致文档"和"机器处理的数据"之间最短的桥。本文介绍如何用 Spire.Doc for Python,用最少的代码完成 Word 转 TXT 与 TXT 转 Word 两个方向的转换,并补充编码处理与批量处理的实战技巧。
为什么需要在 Word 与 TXT 之间互转
两个方向的转换解决的是完全不同的问题,理解各自的适用场景能帮你少走弯路:
- Word → TXT(提取纯内容):当你只关心文字本身、不关心样式时,比如做全文检索、关键词统计、把合同正文喂给大模型、或者生成可在任意终端查看的轻量副本,把 Word 另存为 TXT 是最直接的办法。
- TXT → Word(恢复可编辑性):当内容最初以纯文本形式存在------比如程序导出的日志、从网页复制下来的文字、同事发来的无格式备忘录------转成 Word 后才能排版、加标题、插入表格,成为一份像样的正式文档。
与手动"另存为"或在线转换工具相比,用脚本处理的好处是可复现、可批量、能嵌入更大的文档流水线,而且不依赖人工点击。
环境准备
本文使用 Spire.Doc for Python 完成 Word 与 TXT 之间的互转。它把转换逻辑直接封装在 Document 对象的 LoadFromFile 与 SaveToFile 方法中,指定不同的 FileFormat 即可在保存时自动完成格式切换。先通过 pip 安装:
bash
pip install Spire.Doc
安装完成后,在脚本中导入所需模块即可开始:
python
from spire.doc import *
from spire.doc.common import *
FileFormat 等枚举来自 spire.doc.common,后续转换时直接引用即可。
将 Word 转换为 TXT
把 Word 变成纯文本,本质就是"换一种格式保存"------不需要任何额外处理,只要在 SaveToFile 的第二个参数里指定 FileFormat.Txt,Spire.Doc 就会在保存过程中把文档内容抽取成一行行纯文字,丢掉字体、颜色、表格线等所有样式信息。下面加载一份 .docx 并直接输出为 .txt:
python
from spire.doc import *
from spire.doc.common import *
inputFile = "./Data/Template_Docx_1.docx"
outputFile = "WordToTxt.txt"
# 创建 Word 文档对象
document = Document()
# 从磁盘加载待转换的 Word 文档
document.LoadFromFile(inputFile)
# 以 TXT 格式保存,完成 Word 到纯文本的转换
document.SaveToFile(outputFile, FileFormat.Txt)
document.Close()

这段代码先 LoadFromFile 载入 Word,再调用 SaveToFile 并传入 FileFormat.Txt------引擎会遍历文档正文,把段落、标题文字按先后顺序拼成纯文本写出。转换结束后记得调用 Close() 释放文档资源,尤其在循环批量处理多份文件时,及时释放能避免内存占用过高。需要提醒的是:TXT 是一种"有损"格式,原本的加粗、表格、图片在结果里都不会保留,它只负责把"字"原原本本地拿出来。
将 TXT 转换为 Word
反过来,把纯文本变回 Word 同样是一条龙操作:Spire.Doc 能识别 .txt 扩展名,在 LoadFromFile 时按文本文件读入,随后的 SaveToFile 指定 FileFormat.Docx2013 即可输出成现代 .docx 文档。下面把一份 TXT 还原为可编辑的 Word:
python
from spire.doc import *
from spire.doc.common import *
inputFile = "./Data/Template_TxtFile.txt"
outputFile = "TxtToWord.docx"
# 创建 Word 文档对象
document = Document()
# 加载文本文件(按 .txt 扩展名自动识别为纯文本)
document.LoadFromFile(inputFile)
# 以 Docx2013 格式保存,完成 TXT 到 Word 的转换
document.SaveToFile(outputFile, FileFormat.Docx2013)
document.Close()

这里最值得注意的是 LoadFromFile 会自动根据扩展名判断文件类型,因此无需为"这是文本文件"额外声明。输出时选用 FileFormat.Docx2013,它对应 Office 2013 及之后版本的默认格式,兼容性最好。转换后的 Word 文档里,原文会按换行被拆成若干段落,但原本没有任何样式------它只是把"字"重新装回了 Word 的容器里,后续的字体、标题、表格都需要你自行添加。
处理带编码的文本文件
上面的 LoadFromFile 按扩展名读文本时,默认以常见编码(如 UTF-8 或系统默认编码)解析。如果你的 TXT 是 UTF-7、GBK 之类的特殊编码,直接 LoadFromFile 可能出现乱码。这时可以用 LoadText 方法,并显式传入 Encoding 来指定编码,再照常保存为 Word:
python
from spire.doc import *
from spire.doc.common import *
inputFile = "./Data/Sample_UTF-7.txt"
outputFile = "LoadTextWithEncoding.docx"
# 创建 Word 文档对象
document = Document()
# 按指定编码加载文本文件,避免乱码
document.LoadText(inputFile, Encoding.get_UTF7())
# 保存为 Word 文档
document.SaveToFile(outputFile, FileFormat.Docx2013)
document.Close()
LoadText 与 LoadFromFile 的区别在于前者把"读文本"这一步单独拎出来,并允许你控制编码细节------Encoding.get_UTF7() 只是其中一种,库里还提供了 get_UTF8()、get_Unicode() 等常见选项。当你从老系统、特定地区导出的文件里拿到 TXT 时,先用 LoadText 配对应编码读入,再 SaveToFile 成 Word,就能既保住文字不丢、又拿到可编辑的文档。
综合示例:批量互转一个文件夹
把上面的基础方法放进循环,就能一次性把某个目录里的多份文件批量转换。下面分别演示"把目录下所有 .docx 转成 .txt"和"把目录下所有 .txt 转成 .docx"两个方向的脚本,逻辑完全对称,只是 FileFormat 不同:
python
import os
from spire.doc import *
from spire.doc.common import *
work_dir = "./BatchFiles"
output_dir = "./Output"
# 确保输出目录存在
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 方向一:Word -> TXT
for file_name in os.listdir(work_dir):
if not file_name.lower().endswith(".docx"):
continue
document = Document()
document.LoadFromFile(os.path.join(work_dir, file_name))
out_path = os.path.join(output_dir, file_name.replace(".docx", ".txt"))
document.SaveToFile(out_path, FileFormat.Txt)
document.Close()
print(f"已转 TXT:{file_name}")
# 方向二:TXT -> Word
for file_name in os.listdir(work_dir):
if not file_name.lower().endswith(".txt"):
continue
document = Document()
document.LoadFromFile(os.path.join(work_dir, file_name))
out_path = os.path.join(output_dir, file_name.replace(".txt", ".docx"))
document.SaveToFile(out_path, FileFormat.Docx2013)
document.Close()
print(f"已转 Word:{file_name}")
print("全部转换完成。")
这段脚本的关键点在于"用完即关":每次循环结束都调用 Close(),这样即使处理成百上千份文件,内存也始终处于可控范围。如果 TXT 来源编码不统一,只要把方向二里的 LoadFromFile 换成带 Encoding 的 LoadText 即可,整体结构不变。
实用技巧
- 看清"有损"与"无损":Word→TXT 会丢掉所有样式、表格、图片,只留文字;TXT→Word 得到的也是无样式段落,需要后续自己排版。不要把 TXT 当成 Word 的"备份额外版本"。
- 编码优先 UTF-8 :生成或接收 TXT 时尽量统一成 UTF-8,能省掉大量乱码排查时间;遇到历史文件乱码,再用
LoadText+Encoding兜底。 - 优先输出 Docx2013 :除非要明确兼容 Word 2003 之前的版本,否则 TXT→Word 一律用
FileFormat.Docx2013,体积更小、解析更可靠。 - 先验证单份再批量:批量前先用一两份有代表性的文件(含中文、含空行)试转,确认换行与段落切分符合预期,再跑全量。
- 大文件注意资源 :页数很多的 Word 转换时占用内存较高,建议分批处理并在每份
Close()后稍作间隔,避免单次占用过大。
总结
本文介绍了如何使用 Python 和 Spire.Doc 在 Word 与 TXT 之间双向转换,核心内容如下:
- 使用
document.SaveToFile(outputFile, FileFormat.Txt)把 Word 文档抽取为纯文本 TXT - 使用
document.LoadFromFile(inputFile)加载 TXT 后,SaveToFile(outputFile, FileFormat.Docx2013)将其还原为可编辑的 Word 文档 - 当 TXT 编码特殊可能乱码时,改用
document.LoadText(inputFile, Encoding.get_UTF7())显式指定编码后再保存 - 将基础转换放入循环即可实现文件夹内文件的批量互转,并保持"用完即关"以控制内存
掌握这些方法后,你就能在"人写的精致 Word"和"机器好处理的纯文本"之间自由切换------无论是做内容抽取、日志归档,还是把零散文字整理成正式文档,都能用几行代码自动完成。实际项目中,建议先用单份文件确认换行与编码效果,再结合批量脚本一次性处理全量数据。