python-docx
以下是使用Python复制Word文档内容的详细方法,结合了多种场景和工具,供不同需求选择:
一、使用 python-docx
库进行基础操作
python-docx
是处理Word文档的常用库,支持读取、修改和保存Word文件。
1.1 读取Word文档内容
from docx import Document
# 打开文档
doc = Document("source.docx")
# 获取所有段落文本
paragraphs = doc.paragraphs
full_text = [para.text for para in paragraphs]
# 打印或保存
print(full_text) # 打印第一段
doc.save("modified_document.docx") # 保存修改后的文档
1.2 修改文档内容
# 遍历所有段落并修改文本
for para in paragraphs:
para.text = para.text.replace("Python", "Java")
# 添加新段落
doc.add_paragraph("This is a new paragraph.")
# 保存文档
doc.save("modified_document.docx")
二、使用 win32com
库进行高级操作
win32com
允许Python与Word进行交互,支持复制格式化内容(如图片、格式)。
2.1 复制整个文档内容
import win32com.client as win32
# 启动Word应用(后台运行)
app = win32.Dispatch('Word.Application')
app.Visible = False
app.DisplayAlerts = False
# 打开源文档
src_doc = app.Documents.Open(r'D:\winGUI\test\1.docx')
# 复制内容到新文档
new_doc = app.Documents.Add()
src_doc.Content.Copy()
new_doc.Content.Paste()
# 关闭文档
src_doc.Close()
new_doc.SaveAs(r'D:\winGUI\modified_document.docx')
2.2 保留格式复制内容
# 复制内容并保留格式
doc.Content.Copy()
new_doc.Content.PasteSpecial Paste:=win32.constants.wdPasteAllFormatting
三、其他注意事项
-
图片和格式保留
-
使用
win32com
可复制图片和格式,但需注意Word的剪贴板限制(最多支持2张图片)。 -
使用
Spire.Doc
可批量复制格式,但需额外安装该库。
-
-
批量处理
- 可通过遍历文件夹批量提取文本:
-
代码格式保留
- 在Word中粘贴代码时,使用“保留源格式”选项可保留Python代码的缩进和语法高亮
四、推荐工具与库扩展
-
Spire.Doc :支持复杂格式和结构复制,适合企业级需求
-
Pandas +
to_excel
:适合将数据导出为Word文档(需手动操作) -
docx2txt
:用于提取纯文本,不保留格式
根据具体需求选择合适的方法,python-docx
适合轻量级操作,win32com
和 Spire.Doc
适合复杂场景。