目录
需求:
复制word文档里的两个关键字(例如“起始位置”到“结束位置”)之间的内容到新的word文档。
解决方案:
python代码找到起始位置和终止位置,选择二者之间的内容采用.Copy()包和.Paste()包进行复制粘贴至新文档。
前提:安装win32包,通过pip install pywin32命令直接安装。话不多说,直接上代码。
基于win32包打开word应用程序,并设置word为可视化状态,否则word文档是隐藏的,无法在文件夹下查看到,此处需要注意,不可省略。
定义好word打开程序就可输入文件路径进行打开了,注意此处的file_path是已经存在的文档。
- # 打开word应用程序
- word = win32.gencache.EnsureDispatch('Word.Application')
- # 是否可视化
- word.Visible = 0
- # 源文件路径
- file_path = r'D:/A.docx'
- # 打开
- doc = word.Documents.Open(file_path)
设置起始位置的主要功能就是光标start的查找,FindText的内容是表示在该内容之后设置起始光标。主要实现步骤是:
Python代码实现如下:
-
- # 赋值对象
- search_range = doc.Content
- # 查找内容
- search_range.Find.Execute(FindText="起始位置")
- # 选中查找到的内容
- search_range.Select()
- # 光标左移
- word.Selection.MoveLeft()
- # 将光标位置赋予start
- start = word.Selection.Start.numerator
- print(start)
与起始位置查找一样,设置终止位置的主要功能就是光标end的查找,FindText的内容是表示在该内容之前设置起始光标。主要实现步骤是:
python代码实现如下:
- # 光标end的查找 同上
- search_range = doc.Content
- search_range.Find.Execute(FindText="结束位置")
- search_range.Select()
- word.Selection.MoveLeft()
- end = word.Selection.Start.numerator
- print(end)
这一步比较简单,选取光标start到光标end的内容,调用word.Selection.Copy()命令复制选中文档内容。
Python代码实现如下:
- # 选取光标start到光标end的内容
- doc.Range(start, end).Select()
- # 复制
- word.Selection.Copy()
这一步主要是将上一步复制的内容粘贴到新文档,操作步骤如下:
Python代码实现如下:
- # 粘贴的目标文件
- doc_new = word.Documents.Open('D:/B.docx')
- # 粘贴
- doc_new.Application.ActiveDocument.Range().Paste()
- # 关闭两个文件
- doc_new.Close()
- doc.Close()
完整的python代码如下,包含以上4个步骤,可直接复用。
- import win32com.client as win32
- from win32com.client import constants
- import os
- # 打开word应用程序
- word = win32.gencache.EnsureDispatch('Word.Application')
- # 是否可视化
- word.Visible = 0
- # 源文件路径
- file_path = r'D:/A.docx'
- # 打开
- doc = word.Documents.Open(file_path)
- # 光标start的查找
- # 赋值对象
- search_range = doc.Content
- # 查找内容
- search_range.Find.Execute(FindText="起始位置")
- # 选中查找到的内容
- search_range.Select()
- # 光标左移
- word.Selection.MoveLeft()
- # 将光标位置赋予start
- start = word.Selection.Start.numerator
- print(start)
-
- # 光标end的查找 同上
- search_range = doc.Content
- search_range.Find.Execute(FindText="结束位置")
- search_range.Select()
- word.Selection.MoveLeft()
- end = word.Selection.Start.numerator
- print(end)
-
- # 选取光标start到光标end的内容
- doc.Range(start, end).Select()
- # 复制
- word.Selection.Copy()
- # 粘贴的目标文件
- doc_new = word.Documents.Open('D:/B.docx')
- # 粘贴
- doc_new.Application.ActiveDocument.Range().Paste()
- # 关闭两个文件
- doc_new.Close()
- doc.Close()
输入word文档A.docx内容如下:
“
这是个测试文件: 请复制以下内容到新文档,起始位置攀登航天科技高峰总书记指明方向 - 中国日报网
在建设航天强国之路上勇攀科技高峰.是中国几代航天人探索太空的坚定的信念、执着的追求、套斗的行为准则。结束位置
”
为了清晰看到起始位置和结束位置,特地将两个位置加粗显示,在word中查看A.docx:
经过第一节的Python代码,把两个位置之间的内容复制到一个新文档中并保存新文档。保存出来的B.docx内容如下:
“
攀登航天科技高峰总书记指明方向 - 中国日报网
在建设航天强国之路上勇攀科技高峰.是中国几代航天人探索太空的坚定的信念、执着的追求、套斗的行为准则。
”
可以看到,起始位置之前的内容全部没有了,终止位置之后的内容全部没有了,只有起始位置到终止位置之间的内容,在word中显示B.docx内容如下:
PS:该方法可以保留文档格式段落保持不变,非常奈斯✅。
总结:
语句win32库打开和保存word文档,并根据字符信息查看起始位置和终止位置,并对二者之间的内容进行复制,并粘贴到一个新word文档中,实现依据word文档内容选择特定内容到新的word文档中的目的。
参考:参考链接
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷